• Hbase简介(基础介绍 一)


    目录

    HBase定义

     什么时候用 HBase?

    HBase 和 Hadoop/HDFS 的区别?

    HBase数据模型

    HBase逻辑结构

    HBase物理存储结构

    数据模型

    Name Space

    Table

    Row

    Column

    Time Stamp

    Cell

    HBase架构图


    HBase定义

    HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库

             "NoSQL"是一个通用词表示数据库不是RDBMS ,后者支持 SQL 作为主要访问手段。有许多种 NoSQL 数据库: BerkeleyDB 是本地 NoSQL 数据库例子, 而 HBase 是大型分布式数据库。 技术上来说, HBase 更像是"数据存储(Data Store)" 多于 "数据库(Data Base)"。因为缺少很多RDBMS特性, 如列类型,第二索引,触发器,高级查询语言等

            然而, HBase 有许多特征同时支持线性化和模块化扩充。 HBase 集群通过增加RegionServers进行扩充。 它可以放在普通的服务器中。例如,如果集群从10个扩充到20个RegionServer,存储空间和处理容量都同时翻倍。 RDBMS 也能很好扩充, 但仅对一个点 - 特别是对一个单独数据库服务器的大小 - 同时,为了更好的性能,需要特殊的硬件和存储设备。 HBase 特性:

    • 强一致性读写: HBase 不是 "最终一致性(eventually consistent)" 数据存储. 这让它很适合高速计数聚合类任务。
    • 自动分片(Automatic sharding): HBase 表通过region分布在集群中。数据增长时,region会自动分割并重新分布。
    • RegionServer 自动故障转移
    • Hadoop/HDFS 集成: HBase 支持本机外HDFS 作为它的分布式文件系统。
    • MapReduce: HBase 通过MapReduce支持大并发处理, HBase 可以同时做源和目标.
    • Java 客户端 API: HBase 支持易于使用的 Java API 进行编程访问.
    • Thrift/REST API: HBase 也支持Thrift 和 REST 作为非Java 前端.
    • Block Cache 和 Bloom Filters: 对于大容量查询优化, HBase支持 Block Cache 和 Bloom Filters。
    • 运维管理: HBase提供内置网页用于运维视角和JMX 度量.

     什么时候用 HBase?

    HBase不适合所有问题.

            首先,确信有足够多数据,如果有上亿或上千亿行数据,HBase是很好的备选。 如果只有上千或上百万行,则用传统的RDBMS可能是更好的选择。因为所有数据可以在一两个节点保存,集群其他节点可能闲置。

            其次,确信可以不依赖所有RDBMS的额外特性 (e.g., 列数据类型, 第二索引, 事物,高级查询语言等.) 一个建立在RDBMS上应用,如不能仅通过改变一个JDBC驱动移植到HBase。相对于移植, 需考虑从RDBMS 到 HBase是一次完全的重新设计。

            第三, 确信你有足够硬件。甚至 HDFS 在小于5个数据节点时,干不好什么事情 (根据如 HDFS 块复制具有缺省值 3), 还要加上一个 NameNode.

    HBase 能在单独的笔记本上运行良好。但这应仅当成开发配置。

    HBase 和 Hadoop/HDFS 的区别?

    HDFS 是分布式文件系统,适合保存大文件。官方宣称它并非普通用途文件系统,不提供文件的个别记录的快速查询。 另一方面,HBase基于HDFS且提供大表的记录快速查找(和更新)。这有时可能引起概念混乱。 HBase 内部将数据放到索引好的 "存储文件(StoreFiles)" ,以便高速查询。存储文件位于 HDFS中

    HBase数据模型

    逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map

    HBase逻辑结构

    HBase物理存储结构

    数据模型

    Name Space

    命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。HBase两个自带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default表是用户默认使用的命名空间。

    Table

    类似于关系型数据库的表概念。不同的是,HBase定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往HBase写入数据时,字段可以动态按需指定。因此,和关系型数据库相比,HBase能够轻松应对字段变更的场景。

    Row

    HBase表中的每行数据都由一个RowKey和多个Column(列)组成,数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索,所以RowKey的设计十分重要。

    Column

    HBase中的每个列都由Column Family(列族)Column Qualifier(列限定符)进行限定,例如info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。

    Time Stamp

    用于标识数据的不同版本(version),每条数据写入时,系统会自动为其加上该字段,其值为写入HBase的时间。

    Cell

    由{rowkey, column Family:column Qualifier, time Stamp} 唯一确定的单元。cell中的数据全部是字节码形式存贮。

    HBase架构图

  • 相关阅读:
    微信小程序顶部tab切换
    SeaTunnel 换maven源,解决插件下载慢
    Devops 开发运维高级篇之容器管理
    iMX8 secure boot AHAB调试
    java基于微信小程序的点餐外卖系统 uniapp 小程序
    网站测试都要测试哪些?如何进行测试?
    评价——模糊综合评价
    腾讯云服务器与普通服务器区别在哪?如何选择?
    pytest教程-30-测试数据管理插件-pytest-datadir
    数据标准规划有哪些规划
  • 原文地址:https://blog.csdn.net/weixin_64261178/article/details/140389248