我在寻找问题的答案时遇到了问题:
我想预先拆分HBase表,例如在5个地区。配置中的最大文件大小我已设置为10GB。 (当然是一个例子)。如果我将所有5个地区填满桌子怎么办? HBase将为此创造第6个区域?
我发现它会自动分成两个区域,但我需要确定并做一些解释。
感谢所有答案。
答案 0 :(得分: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/