如何增加 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 表中的区域数的主要内容,如果未能解决你的问题,请参考以下文章