Hbase的一点小总结

前言

记录一下当时在管理CDH版本的Hbase时候的一些小经验。

配置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的办法。

  1. 切换balance:

    balance_switch false
  2. unload:

    /usr/bin/hbase --config  /etc/hbase/conf org.jruby.Main /usr/lib/hbase/bin/region_mover.rb  unload <hostname>
  3. 停止RS:

    service hbase-regionserver stop
  4. 切换balance:

    balance_switch true

参考

https://www.cloudera.com/documentation/enterprise/latest/topics/admin_hbase_config.html

您的支持将鼓励我继续创作!
0%