前言
配置HBase Canary
Canary是一个阶段性检查RegionServer是否存活的服务。默认是关闭的,你可以启用这个服务,并设置一些相关属性。
- 启用Canary
/usr/bin/hbase org.apache.hadoop.hbase.tool.Canary --daemon
具体可配置选项可以查看官网文档。
检查以及修复HBase表
使用hbck命令有两种模式:
- 只检查不修复
- 检查并修复
运行hbck命令(不带参数:检查表并打印ok,若有问题,只会显示问题的数目。)
/usr/lib/hbase/bin/hbase hbck |
打印详细的检查日志:
/usr/lib/hbase/bin/hbase hbck -details |
检查指定的表:
/usr/lib/hbase/bin/hbase hbck <table1> <table2> |
Hedged Read
如果正在读某个block比较慢,hdfs客户端会启动另一个并行的线程去读此block的副本。此功能只能在HFiles存储在hdfs上的时候被启用,默认是关闭的。
启用Hedged Read
在HBase集群的每一台机器上面的hbase-site.xml文件设置如下属性。
<property>
<name>dfs.client.hedged.read.threadpool.size</name>
<value>20</value> <!-- 20 threads -->
</property>
<property>
<name>dfs.client.hedged.read.threshold.millis</name>
<value>10</value> <!-- 10 milliseconds -->
</property>
配置RS的数据均衡
当时在HBase的管理界面上发现region在各个RS上面并不均衡,通过查阅文档得出需要配置以下两个属性。
<property>
<name>hbase.balancer.period</name>
<value>3000000</value>
</property>
<property>
<name>hbase.master.loadbalancer.class</name>
<value>org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer</value>
</property>
同时,如果对RS使用graceful_stop,这个脚本会去检查balancer是否开启,如果是,会自动把balancer关闭,故节点下线之后需要手动开启balancer。命令如下:
balance_switch true |
同时,也可以手动关闭balancer,命令如下;
balance_switch false |
hbase节点平滑下线
注:这是管理CDH版本Hbase的办法。
切换balance:
balance_switch false
unload:
/usr/bin/hbase --config /etc/hbase/conf org.jruby.Main /usr/lib/hbase/bin/region_mover.rb unload <hostname>
停止RS:
service hbase-regionserver stop
切换balance:
balance_switch true
参考
https://www.cloudera.com/documentation/enterprise/latest/topics/admin_hbase_config.html