背景

集群中,发现hbase 的compaction 队列一直增长,出现hang住的情况,排查发现,一些表的region集中在某些机器上,分布不均匀。但是排查发现auto balancer是默认开启的。所以猜测balancer失效。

排查步骤

排查的第一步,拿到日志,查看是否有相关balancer的日志信息。但是没有什么明显的发现。所以开启balancer 的debug模式
登录cm页面——》选择hbase ,打开active master web页面——》log level
在get/set的第二行,写入org.apache.hadoop.hbase.master.balancer这个类,Level中写入TRACE然后点击Set Log Level
image.png
image.png
日志开启完成
image.png
这个配置可以不用重启,就直接在master节点上看到trace的日志
image.png

解决方案

如上图,发现balancer是被跳过了。
Skipping load balancing because balanced cluster; total cost is 40.0, sum multiplier is 1102.0 min cost which need balance is 0.05
然后梳理了下hbase 的balancer机制,参考以下文档
https://developer.aliyun.com/article/752985
cm——》hbase——》配置——》搜索hbase-site.xml 的 Master 高级配置代码段(安全阀)
配置以下参数
name: hbase.master.balancer.stochastic.minCostNeedBalance
value: 0.01 #默认是0.05
**