大数据-HBase(二)

                                   大数据-HBase(二)

HBase的概念

  • HBase基于Google的BigTable论文,是建立在HDFS之上,提供高可靠性高性能列存储可伸缩实时读写的分布式数据库系统。

  • 在需要实时读写随机访问超大规模数据集时,可以使用HBase。

HBase的特点

  • 海量存储

可以存储大批量的数据。

  • 列式存储

HBase表的数据是基于列族进行存储的,列族是在列的方向上的划分。

  • 极易扩展

底层依赖HDFS,当磁盘空间不足的时候,只需要动态增加datanode节点就可以了。

可以通过增加服务器来对集群的存储进行扩容。

  • 高并发

支持高并发的读写请求。

  • 稀疏

稀疏主要是针对HBase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

  • 数据的多版本

HBase表中的数据可以有多个版本值,默认情况下是根据版本号去区分,版本号就是插入数据的时间戳。

  • 数据类型单一

所有的数据在HBase中是以字节数组进行存储。

HBase表的数据模型

大数据-HBase(二)

 rowkey行键

  • table的主键,table中的记录按照rowkey 的字典序进行排序。

  • Row key行键可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes)。

Column Family列族

  • HBase表中的每个列,都归属与某个列族。

  • 列族是表的schema的一部分(而列不是),即建表时至少指定一个列族。

Column列

  • 列肯定是表的某一列族下的一个列,用列族名:列名表示,如info列族下的name列,表示为info:name

  • 属于某一个ColumnFamily,类似于我们mysql当中创建的具体的列

cell单元格

  • 指定row key行键、列族、列,可以确定的一个cell单元格。

  • cell中的数据是没有类型的,全部是以字节数组进行存储。

Timestamp时间戳

  • 可以对表中的Cell多次赋值,每次赋值操作时的时间戳timestamp,可看成Cell值的版本号version number

  • 即一个Cell可以有多个版本的值

HBase整体架构

大数据-HBase(二)

Client客户端

  • Client是操作HBase集群的入口

    • 对于管理类的操作,如表的增、删、改操纵,Client通过RPC与HMaster通信完成
    • 对于表数据的读写操作,Client通过RPC与RegionServer交互,读写数据
  • Client类型:

    • HBase shell
    • Java编程接口
    • Thrift、Avro、Rest等等

ZooKeeper集群

  • 实现了HMaster的高可用,多HMaster间进行主备选举。
  • 保存了HBase的元数据信息meta表,提供了HBase表中region的寻址入口的线索数据。
  • 对HMaster和HRegionServer实现了监控。

HMaster

  • HBase集群也是主从架构,HMaster是主的角色。

  • 主要负责Table表和Region的相关管理工作:

    • 关于Table

      • 管理Client对Table的增删改的操作。

    • 关于Region
      • 在Region分裂后,负责新Region分配到指定的HRegionServer上。
      • 管理HRegionServer间的负载均衡,迁移region分布。
      • 当HRegionServer宕机后,负责其上的region的迁移。

HRegionServer

  • HBase集群中从的角色。

  • 作用

    • 响应客户端的读写数据请求。
    • 负责管理一系列的Region。
    • 切分在运行过程中变大的region。

Region

  • HBase集群中分布式存储的最小单元。
  • 一个Region对应一个Table表的部分数据。