尚学堂大数据笔记:Hbase的数据模型

HBase是一种分布式的开源数据库,通常以表的形式对数据进行存储。HBase属于Hadoop集群,在Hadoop之上的作用也类似于Bigtable。作为Hadoop的一个子项目,HBase与一般的关系型数据库也有所不同,适用于进行结构化存储,为大数据处理以及MapReduce的运行提供支撑。HBase表由行和列族组成。列划分为若干个列族(row family)。

关于HBase有几个关键概念:

1、行键(RowKey)

行键是字节数组, 任何字符串都可以作为行键;表中的行根据行键进行排序,数据按照 Row key 的字节序(byte order)排序 存储;所有对表的访问都要通过行键(单个 RowKey 访问,或 RowKey 范围访问,或全表扫描)。

2、列族(ColumnFamily)

列族CF必须在表定义时给出,每个CF 可以有一个或多个列成员(ColumnQualifier),列成员不需要在表定义时给出,新的列族成员可以随后按需、动态加入。

数据按 CF 分开存储,HBase 所谓的列式存储就是根据 CF分开存储(每个 CF 对应一个Store),这种设计非常适合于数据分析的情形。

3、单元格(Cell)

Cell由行键,列族:限定符,时间戳唯一决定;Cell中的数据是没有类型的,全部以字节码形式存储。

4、时间戳(TimeStamp)

每个Cell可能有多个版本,它们之间用时间戳区分。

5、区域(Region)

HBase 自动把表水平(按 Row)划分成多个区域(region),每个 region 会保存一个表里面某段连续的数据;每个表一开始只有一个 region,随着数据不断插入表,region 不断增大,当增大到一个阀值的时候,region就会等分会两个新的region;当table 中的行不断增多,就会有越来越多的 region。这样一张完整的表被保存在多个 Region 上。

虽然Region是分布式存储的最小单元,但并非存储的最小单元。这一点各位要特别注意。尚学堂陈老师指出Region由 一个或者多个 Store组成,每个 store 保存一个 columns family;每个 Strore 又由一个 memStore 和 0 至多个 StoreFile 组成,StoreFile 包含HFile;memStore 存储在内存中,StoreFile 存储在 HDFS 上。

综上所述,关于HBase的数据模型可以从以上5点来加以理解。笔者建议,在初学HBase的过程中,多看官方的文档是非常重要的,而对数据模型的理解可以从实际应用中加深认识。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180312A0JSI500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券