数据清理

1. 停止HBase

  1. export HBASE_HOME=/home/bigdata/modules/hbase-1.2.5
  2. ${HBASE_HOME}/bin/stop-hbase.sh

2. 清理HDFS目录

  1. export HADOOP_HOME=/home/bigdata/modules/hadoop-2.7.2
  2. cd ${HADOOP_HOME}
  3. bin/hdfs dfs -rm -r /hbase

3. 清理ZooKeeper目录

  1. export ZOOKEEPER_HOME=/home/bigdata/modules/zookeeper-3.4.10
  2. cd ${ZOOKEEPER_HOME}/bin
  3. ./zkCli.sh -server localhost:2181
  4. zk >> rmr /hbase

4. 启动HBase

  1. export HBASE_HOME=/home/bigdata/modules/hbase-1.2.5
  2. ${HBASE_HOME}/bin/start-hbase.sh

节点管理

服役(commissioning)

当启动RegionServer时,RegionServe会向HMaster注册并开始接收本地数据,开始的时候,新加入的节点不会有任何数据,平衡器开启的情况下,将会有新的region移动到开启的RegionServer上。如果启动和停止进程是使用ssh和HBase脚本,那么会将新添加的节点的主机名加入到conf/regionservers文件中。

  1. # 1.服役节点启动ReginServer
  2. ./bin/hbase-daemon.sh start regionserver
  3. # 2.开启负载平衡器
  4. hbase(main)> balance_switch true

退役(decommissioning)

1. HBase-0.90.2

注意:在0.90.2之前,退役节点只能通过在要卸载的节点上执行。

  1. 停止负载平衡器。

    1. hbase(main)> balance_switch false
  2. 在退役节点上停止RegionServer。

    1. ./bin/hbase-daemon.sh stop regionserver
  3. RegionServer一旦停止,会关闭维护的所有region。

  4. Zookeeper上的该RegionServer节点消失。
  5. Master节点检测到该RegionServer下线,开启平衡器(整个集群的均衡器)。
  6. 下线的RegionServer的region服务得到重新分配。

这种方法很大的一个缺点是该节点上的Region会离线很长时间。因为假如该RegionServer上有大量Region的话,因为Region的关闭是顺序执行的,第一个关闭的Region得等到和最后一个Region关闭并Assigned后一起上线。这是一个相当漫长的时间。每个Region Assigned需要4s,也就是说光Assigned就至少需要2个小时。该关闭方法比较传统,需要花费一定的时间,而且会造成部分region短暂的不可用。

2. HBase-0.90.2+

自0.90.2之后,HBase添加了一个新的方法,即“graceful_stop”,只需要在HBase Master节点执行。Region从HRegionServer上面进行卸载(即:他们不对外提供服务了)之后HMaster会启动将已经卸载的Region分配到其他的HRegionServer上面。这样就有效的保障了Hbase的可靠性。

  1. 优雅停止ReginServer。

    1. bin/graceful_stop.sh <RegionServer-hostname>

    该命令会自动关闭Load Balancer,然后Assigned转移Region,之后会将该节点关闭。除此之外,你还可以查看remove的过程,已经Assigned了多少个Region,还剩多少个Region,每个Region 的Assigned耗时。

  2. 开启负载平衡器。

    1. hbase(main)> balance_switch true

    之后的步骤参考上述的2~6。