如何增加HBase表中的区域数量

时间:2015-04-13 10:38:31

标签: hadoop hbase

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

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

因为我不能再次执行此命令来增加区域数量。是否有任何命令可用于更新现有表中的区域数量?

1 个答案:

答案 0 :(得分:7)

请注意,您提供的命令会创建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

查看当前区域

ie:如果你有一个区域有StartKey 20000000和EndKey 40000000你的splitKey将是30000000,或者,如果你有一个区域有StartKey 20000000和EndKey 30000000你的SplitKey将是28000000(记住,它的HEX)

请先使用测试表进行测试,直到您对该过程充满信心。