如何增加 HBase 表中的区域数

Posted

技术标签:

【中文标题】如何增加 HBase 表中的区域数【英文标题】:How to increase number of regions in an HBase table 【发布时间】:2015-04-13 10:38:31 【问题描述】:

我在 HBase 中创建了一个表,其中预先分割了 8 个区域,使用 HexStringSplit 作为分割算法。现在我想增加区域的数量,而不破坏现有的表和其中的数据。我创建预拆分的命令是

create 't1', 'f1', NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'

事实上,我无法再次执行此命令以增加区域数量。是否存在用于更新现有表中区域数的命令?

【问题讨论】:

【参考方案1】:

请注意,您提供的命令创建了 15 个区域,而不是 8 个:create 't1', 'f1', NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'

您可以使用 split 命令分割区域:

hbase(main):001:0> split

Here is some help for this command:
Split entire table or pass a region to split individual region.  With the
second parameter, you can specify an explicit split key for the region.
Examples:
    split 'tableName'
    split 'regionName' # format: 'tableName,startKey,id'
    split 'tableName', 'splitKey'
    split 'regionName', 'splitKey'

您应该使用split 'regionName', 'splitKey'split 'tableName', 'splitKey',只是不要忘记为每个区域提供正确的SplitKey(中间那个)以确保均匀分布。您可以在http://your-hbase-master:60010/table.jsp?name=your-table查看当前区域

即:如果您有一个具有 StartKey 20000000 和 EndKey 40000000 的区域,则您的 splitKey 将为 30000000,或者,如果您有一个具有 StartKey 20000000 和 EndKey 30000000 的区域,您的 SplitKey 将为 28000000(请记住,它是 HEX)

请先使用测试表进行尝试,直到您对该过程有足够的信心。

【讨论】:

感谢您的帮助。

以上是关于如何增加 HBase 表中的区域数的主要内容,如果未能解决你的问题,请参考以下文章

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

此时确保 HBase 表中的行数增加的最有效方法是啥?

为啥新添加的 HBase 区域服务器无法获取分配的区域?

Hbase中对数据 增删改查 工作流程

如何将 HBase 的扫描限制在 MapReduce 作业的相关(未过滤)区域

增加 Woocommerce 商店页面内容区域的宽度,保留侧边栏