Hadoop HBase预拆分和最大区域大小

Hadoop HBase预拆分和最大区域大小,hadoop,hbase,bigdata,cloudera-cdh,Hadoop,Hbase,Bigdata,Cloudera Cdh,我无法找到问题的答案: 我想预拆分HBase表,例如在5个区域上。我为10GB设置的配置中的最大文件大小。当然,这只是个例子。如果我将填写表格的所有5个区域,该怎么办?HBase将为此创建第六个区域 我发现它会自动分为两个区域,但我需要确定和一些解释 感谢您的所有回答。让我们首先讨论预拆分 只有当我们知道密钥的分布时,才建议这样做,否则如果数据中存在任何偏差,预拆分可能会导致数据负载不均匀 它是Hbase的一般特性,用于自动和可配置的表切分 从Cloudera Hbase网站上引用: 无论是否使

我无法找到问题的答案:

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

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


感谢您的所有回答。

让我们首先讨论预拆分

只有当我们知道密钥的分布时,才建议这样做,否则如果数据中存在任何偏差,预拆分可能会导致数据负载不均匀

它是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);

更多信息:-

所以如果我将表预拆分为5个区域,这只是该表的区域数的开始?我读过这篇文章,但我不确定我是否理解得很好。是的,这只是一个开始。假设你的密钥分配是按字母顺序进行的,最多26种类型,你把它分为5个区域,你有更多或更少的偶数个密钥,举个例子,它是均匀分布的。在这种情况下,如果您只有某些字母表的键,这会造成数据倾斜,而且不会不均匀。因此,最好让HBase控制密钥的分发。如果答案消除了疑问,请您接受答案。