分享

如何hbase如何预先划分region

李新魁 发表于 2014-11-19 11:28:29 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 6 59162
解决热块问题,可以使用 代码来递增rowkey 。
但是我想问下,这样会不会导致region分配的过多,导致.mata表压力过大。

还有一个问题就是怎么预先划分region呢?

已有(6)人评论

跳转到指定楼层
bioger_hit 发表于 2014-11-19 11:39:35

解决热点问题,方法很多,region分配的过多、region分配的过多不知道楼主是如何考虑的,
如何去进行预分区,可以采用下面三步:
    1.取样,先随机生成一定数量的rowkey,将取样数据按升序排序放到一个集合里
    2.根据预分区的region个数,对整个集合平均分割,即是相关的splitKeys.
    3.HBaseAdmin.createTable(HTableDescriptor tableDescriptor,byte[][] splitkeys)可以指定预分区的splitKey,即是指定region间的rowkey临界值.

详细参考
HBase Rowkey的散列与预分区设计


回复

使用道具 举报

李新魁 发表于 2014-11-19 11:46:29
bioger_hit 发表于 2014-11-19 11:39
解决热点问题,方法很多,region分配的过多、region分配的过多不知道楼主是如何考虑的,
如何去进行预分 ...

谢谢,发现这个论坛很难搜到我想要的。
回复

使用道具 举报

admin 发表于 2014-11-19 12:21:26
李新魁 发表于 2014-11-19 11:46
谢谢,发现这个论坛很难搜到我想要的。


推荐使用这个搜索
http://search.aboutyun.com/

1.png


回复

使用道具 举报

nextuser 发表于 2018-4-9 18:29:43


如果已经创建好,数据已经填充。这个在修改分区,基本不可能了。重新建表,然后将旧表数据导入。
当然你也可以尝试下面方法:
1.修改hbase.hregion.max.filesize的大小,然后采用负载均衡
2.增多预分区,也就是创建表后,在采用预分区的方式,看能否创建成功。
这是个人想出来的办法。如果不死心,可以试试。



参考这个帖子Hbase 分区问题
http://www.aboutyun.com/forum.php?mod=viewthread&tid=13033




回复

使用道具 举报

pig2 发表于 2018-4-9 19:17:08
HBase-1.2版本以后,增加功能Normalizer,可以通过编程或则hbase shell的方式,合并小的region。
shell的方式如下
[mw_shl_code=bash,true]hbase(main):001:0> normalizer_enabled
true
0 row(s) in 0.4870 seconds

hbase(main):002:0> normalizer_switch false
true
0 row(s) in 0.0640 seconds

hbase(main):003:0> normalizer_enabled
false
0 row(s) in 0.0120 seconds

hbase(main):004:0> normalizer_switch true
false
0 row(s) in 0.0200 seconds

hbase(main):005:0> normalizer_enabled
true
0 row(s) in 0.0090 seconds[/mw_shl_code]

相关api

1.png

https://hbase.apache.org/devapid ... gionNormalizer.html
回复

使用道具 举报

pig2 发表于 2018-4-9 22:19:39

更多内容推荐参考
hbase Normalizer解决预分区错误,在不动数据的情况下完美解决1
http://www.aboutyun.com/forum.php?mod=viewthread&tid=24292
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条