HBase 预分割和最大区域大小

Posted

技术标签:

【中文标题】HBase 预分割和最大区域大小【英文标题】:HBase pre-splitting and maximum region size 【发布时间】:2018-04-10 05:29:30 【问题描述】:

我无法找到问题的答案:

我想预先拆分 HBase 表,例如在 5 个地区。我设置的配置中的最大文件大小为 10GB。 (当然只是例子)。如果我将填写我所有的 5 个区域作为表格怎么办? HBase 会为此创建第 6 个区域吗?

我发现它会自动分成 2 个区域,但我需要确定和一些解释。

感谢所有回答。

【问题讨论】:

【参考方案1】:

让我们先讨论一下预拆分。

仅在我们知道键的分布时才推荐使用,否则如果数据中存在任何倾斜,预拆分可能会导致数据加载不均匀。

它是 Hbase 的一般性质,用于自动和可配置的表分片。

引自 Cloudera Hbase 站点:-

无论是否使用预拆分,一旦某个区域达到一定的限制,它就会自动拆分为两个区域。

您可以通过设置配置“hbase.regionserver.region.split.policy”或配置表描述符来配置要使用的默认拆分策略。我们还可以实现我们自己的自定义拆分策略,并在创建表时将其插入,或者通过修改现有表:

HTableDescriptor tableDesc = new HTableDescriptor("example-table");
tableDesc.setValue(HTableDescriptor.SPLIT_POLICY, <SplitPolicy.class.getName()>);
//add columns etc
admin.createTable(tableDesc);

更多信息:-https://hortonworks.com/blog/apache-hbase-region-splitting-and-merging/

【讨论】:

所以如果我为 5 个区域预先拆分表,它只是该表的起始区域数?我读过这篇文章,但我不确定我是否理解得很好。 是的,它只是一个起始编号。如果假设您的密钥分配是按字母顺序完成的(最多 26 种类型,并且您将其拆分为 5 个区域)并且您拥有或多或少的偶数个密钥(只是一个示例),那么它是均匀分布的。以防万一,如果您只有某些字母的键,这会导致数据出现偏差,并且不会不均匀。所以最好让 HBase 控制分配密钥。 如果答案已经消除了疑惑,请您接受答案。

以上是关于HBase 预分割和最大区域大小的主要内容,如果未能解决你的问题,请参考以下文章

hbase 架构

如果具有 hbase 表区域的节点出现故障会发生啥

matlab求连通区域的最大直径

Hbase 区域在不应该分裂时分裂

图像分割基于matlab改进的遗传算法与最大熵法结合图像分割含Matlab源码 2302期

图像分割基于matlab改进的遗传算法与最大熵法结合图像分割含Matlab源码 2302期