分享

Hbase负载均衡问题!帮忙看看

星期三上线的系统,主要功能就是数据入库Hbase,前面杠杠的!
今天入库的时候,我在phoenix上想查询一下这个表有多少货的时候,数据入库程序的log开始提示 有任务没有成功(现在在宿舍,没法提供log。)
我看这台regionserver的内存已经飙到不行了,看另外两台基本还有6G多free。(三台regionServer,每台8G内存)
我又去Hbase那边查看了一下这个表,发现这个表已经有三个块了,但是三个块却都放在dn1这台RegionServer上。
这太不合理了吧。其余表都是很小的表,主要就是这个表。

去网上搜了一下相关资料: 负载均衡应该都是Hmaster这个管家来运维的啊,它怎么会把这三个块放在一台RegionServer上。
2.负载均衡实行条件。
负载均衡以特定时间间隔(hbase.balancer.period 默认是5分钟)执行。
当遇到如下场景时候不进行负载均衡:
1.均衡负载开关balanceSwitch关闭。  这东东HBASE是不是默认开的?

2.HMase为完成初始化。    ?

3.RIT中有未处理完的regions。   确认没有!

4.有正在处理的DeadRegionserver.  确认没有!


以下是在公司截图部分:
捕获1.JPG
捕获2.JPG




补充内容 (2015-6-30 10:00):
今天稍微搜了一下,可以手动迁移Region,在Hbase shell里面使用move 'RegionID','RegionServerName'。

或者java api 的 HbaseAdmin.move来手动迁移。

已有(5)人评论

跳转到指定楼层
s060403072 发表于 2015-6-29 21:45:29
本帖最后由 s060403072 于 2015-6-29 22:02 编辑

rowkey是怎么设计的,可能产生热点造成的。
楼主配置负载均衡了吗?

了解下StochasticLoadBalancer,理论上这个可以解决问题。
但是最好把rowkey设计好,或则采用预分区的方式


##################################################


下面资料可参考:


HBase的rowkey设计

HBase Rowkey的散列与预分区设计

hbase Balancer 源码分析-负载均衡


HBase中如何开发LoadBalance插件

回复

使用道具 举报

s060403072 发表于 2015-6-29 21:47:23
回复

使用道具 举报

linjikai8888 发表于 2015-6-29 22:02:47

晕。。点错了!

rowkey是按照MD5处理后的byte数组+一个inter值。

回复

使用道具 举报

linjikai8888 发表于 2015-6-29 22:08:07

我的问题跟rowkey设计应该没有关系吧,

我疑惑的是 为什么会放在同一台regionServer上。

回复

使用道具 举报

s060403072 发表于 2015-6-29 22:11:12
linjikai8888 发表于 2015-6-29 22:02
晕。。点错了!

rowkey是按照MD5处理后的byte数组+一个inter值。

有关系,rowkey设计好,会被分布到不同的regionServer
最好采用多种措施+预分区
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条