HBase区域中的数据可以根据族:列的值手动排列

时间:2014-12-16 09:52:49

标签: database hadoop hbase apache-zookeeper

我已经在几周内一直在研究HBase,我的项目仍处于设计状态,正在进行POC。在我问我的查询之前,让我简要介绍一下我所推断的内容。

HBase中水平可伸缩性的基本单位称为Region。区域是表格数据的子集,它们基本上是存储在一起的连续排序行。 当区域在添加更多行后变得太大时,该区域在中间键处被分成两个,从而产生两个大致相等的一半。

HBase表的多映射结构因此可以概括为 键 - >家庭 - >列 - >时间戳 - >值。

HBase在内部保留名为-ROOT-和.META的特殊目录表。在其中维护群集上所有区域的当前列表,状态和位置。 -ROOT-表包含.META列表。表区域。 .META。 table保存所有用户空间区域的列表。这些表中的条目按区域名称键入,其中区域名称由区域所属的表名称,区域的起始行,创建时间以及最后所有前者的MD5哈希

组成。

可以存储在区域中的行数取决于为区域定义的阈值,即这是我认为可以手动给出的值。

所以我想做的是: -

如果表格中包含USERID,ROLE& YEAR是他们的,可以说数百万元组。我想创建两个层。 具有区域节点的一层在年份范围内区分。假设一个地区存储了1990年至1995年的数据,另一个存储了1996年至2000年的数据,依此类推。 &安培;第二层在角色上有所区别。例如,一个区域节点为admin(id -1)保存数据,为用户保存数据(id -2),依此类推。 每个层都有自己的区域服务器,并映射到由ZOOKEEPER管理的元表和元表中。 请参阅下图以进一步说明: - enter image description here

也许不止一个动物园管理员可以同步工作,由另一个动物园管理员管理。

所以这就是我要提出的设计,我想询问它的可行性

1 个答案:

答案 0 :(得分:0)

如果您创建了两个表,hbase将根据需要自动执行拆分和重新平衡。 如果要手动预拆分表,则在创建时可以为每个表指定所需的键范围集,hbase将为每个范围创建一个区域。然后平衡器将负责将不同的区域分配到不同的机器。 您不需要关心Zookeeper,-ROOT-或.META。

http://blog.cloudera.com/blog/2013/04/how-scaling-really-works-in-apache-hbase/