顾名思义,就是从当前HBase集群中删除某个RegionServer
1、方式一 (不建议) 0.90.2版本之前,只有这一种方式
1)进入HBase客户端命令行
[victor@node1 hbase]$ bin/hbase shell
2)停止负载平衡器(在HMaster节点上)
hbase> balance_switch false
3)在退役节点上停止RegionServer
[victor@node1 hbase]$ hbase-daemon.sh stop regionserver
4)RegionServer一旦停止,会关闭维护的所有region
5)Zookeeper上的该RegionServer节点消失
6)Master节点检测到该RegionServer下线
7)RegionServer的region服务得到重新分配
8)启动负载平衡器(在HMaster节点上)
[victor@node1 hbase]$ bin/hbase shell
hbase> balance_switch true
尖叫提示:该关闭方法比较传统,需要花费一定的时间,时间特别长,而且会造成部分region短暂的不可用,这种方法很大的一个缺点是该节点上的Region会离线很长时间,因为假如该RegionServer上有大量Region的话,因为Region的关闭是顺序执行的,第一个关闭的Region得等到和最后一个Region关闭并Assigned后一起上线。这是一个相当漫长的时间。
2、方式二(建议)
1)RegionServer先卸载所管理的region
[victor@node1 hbase]$ bin/graceful_stop.sh node1
尖叫提示:该命令会自动关闭Load Balancer(banlance_switch),然后转移该regionserver维护的region到其他节点,将该节点关闭。除此之外,你还可以查看remove的过程,已经assigned了多少个Region,还剩多少个Region,每个Region 的Assigned耗时,最终都需要我们手动打开load balancer,我们需要手动开启均衡器[ hbase shell banlance_switch true ]
2)在退役节点上停止RegionServer ,不着急,等一等
[victor@node1 hbase]$ hbase-daemon.sh stop regionserver
3)RegionServer一旦停止,会关闭维护的所有region
4)Zookeeper上的该RegionServer节点消失
5)Master节点检测到该RegionServer下线
6)RegionServer的region服务得到重新分配,已经提前读出来,时间短效率快
7)启动负载平衡器(在HMaster节点上)
[victor@node1 hbase]$ bin/hbase shell
hbase> balance_switch true
尖叫提示:强烈建议使用“graceful_stop”来移除节点,当Hadoop和HBase都需要退役节点时,先退役HBase。