Hbase 节点启停过程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase 节点启停过程相关的知识,希望对你有一定的参考价值。
参考技术A 1、FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。2、RegionServer
HRegionServer is the RegionServer implementation. It is responsible for serving and managing regions. In a distributed cluster, a RegionServer runs on a DataNode .
3、Regions
Regions are the basic element of availability and distribution for tables, and are comprised of a Store per Column Family. The hierarchy of objects is as follows:
Table (HBase table)
Region (Regions for the table)
Store (Store per ColumnFamily for each Region for the table)
MemStore (MemStore for each Store for each Region for the table)
StoreFile (StoreFiles for each Store for each Region for the table)
Block (Blocks within a StoreFile within a Store for each Region for the table)
对应的数据存储结构:
Region结构说明
(二)单个节点停止
HBASE 节点停止分为优雅停止(Graceful Stop)和立即停止(• Stop )
• Graceful Stop 该方式会促使Regions重新分配到其它的RegionServer节点,下线region在新节点部署后才重新分配下一个region,当所有region都在新节点部署后才下线自己,这样增加节点断开hbase服务的有效性。该方式设置了一个超时时间,如果在指定的超时时间没有成功完成停止节点的工作,会转为使用kill -9 终止RegionServe服务。恢复时会从受影响的region开始。执行的命令:
$ ./bin/graceful_stop.sh
Usage: graceful_stop.sh [--config &conf-dir>] [--restart] [--reload] [--thrift] [--
rest] &hostname>
thrift If we should stop/start thrift before/after the hbase stop/start
rest If we should stop/start rest before/after the hbase stop/start
restart If we should restart after graceful stop
reload Move offloaded regions back on to the stopped server
debug Move offloaded regions back on to the stopped server
hostname Hostname of server we are to stop
• Stop 刚方式RegionServer会立即关所有的region,然后关闭自己,不会将Regions重新分配到其它的RegionServer节点,这种方式当region比较多时关闭有可能需要很长时间,该方式使用ill -5 终止RegionServe服务。
$ ./bin/hbase-daemon.sh stop regionserver
两种方式都建议关闭Load Balancer:
关闭命令:
hbase(main):001:0> balance_switch false
开启命令:
balance_switch true
(三)、节点启动
手工启动命令:
$ ./bin/hbase daemon.sh start regionserver
bin/graceful_stop.sh --restart --reload --debugregionserver_nodename;
他会先将需要重启的regionserver上面的所有region迁移到其它的服务器,然后重启,最后又会将之前的region迁移回来。
Hbase中每个Region自己维护其在hbase:meta表中的信息。
状态机中包括下面几种状态:
offline:region离线没有开启
opening:region正在被打开
open:region正在打开,并且region server通知了master
failed_open:regionserver打开失败
closing:region正在被关闭
closed:regionserver正在关闭,并且已经通知了master
failed_close:regionserver关闭失败了
splitting:region server通知master,region正在被切分
split:region server通知master,region已经被切分完了
spliting_new:region是切分过程中新建的文件
merging:regionserver通知master region正在合并
merged:regionserver通知master region合并完了
merging_new:region是合并新建出来的
不同的颜色是不同含义:
棕色:离线状态,属于一种短暂的瞬间状态(比如关闭后开启的中间状态)、停止状态或者初始化的时候的状态
绿色:正常的状态,可以支持请求访问
蓝色:短暂的状态
红色:失败
黄色:合并或者切分的状态
灰色:刚开始的状态
各个序号代表不同的操作场景:
1、Master向region server发起region从offline到openning的状态请求,regionserver如果没有收到,master会尝试重试几次。RegionServer接收到请求后,regin状态变成opening
2、如果Master发起的open请求超过次数,那么无论region server是否已经打开region,master都会命令region server关闭文件,状态变为closing
3、当region server打开region后,会尝试通知master,让他把region状态修改为open,并通知regsion server。这样region才能变为open状态
4、如果region server打开四百,会尝试通知master。master会把region的状态变更为closed,并且尝试去其他的region server打开region
5、如果master尝试几次后,都没有打开region,就会把状态变更为failed_open
6、master通知region server关闭region,如果没有反应,会重试
7、如果region server没有在线,会抛出异常。然后region的状态会变成closing
8、如果region server在线,但是好几次都没响应,就会更新状态为failed_close
9、如果region server收到请求,并且关闭了region,那么会通知master把region状态修改为closed。并且把region分配给其他的server
10、在分配之前,master会先把region从closed状态转换为offline
11、如果region server正在切分region,会通知mastere。master把region状态由open变为splitting,并且把新增两个region的信息,这两个region都是splitting_new状态
12、如果region切分成功,当前的region状态从splitting变成split;新增的两个region状态从splitting_new变成open
13、如果切分失败,状态从splitting回到open,两个region也从splitting_new变成offline
14、如果region server想要合并两个region,那么也会先通知master。master把两个region从open变成merging,然后增加一个新的region,状态为merging_new
15、合并成功,旧的region从merging变为merged,新的region从merging_new变为open
16、如果合并失败,region的状态从merging变回open,新建的一个region状态又变成offline
17、如果管理员通过hbase shell操作分配region,master会尝试把失败的状态变成close
.baiduX��,�
lightdb22.3 - 集群启停脚本新特性
LightDB22.3 - 启停脚本新特性
在 LightDB22.3 中启停脚本增加了对单节点的启停操作。而且从这个版本开始启停脚本不在需要在 root 用户下执行。只需要执行用户拥有sudo免密权限。
而sudo免密权限是通过 installer 安装的一个前置条件。
单节点启停
支持如下新选项来指定要操作的单节点:
-n <node_info>, --node <node_info>
only start/stop/restart specified node, node_info
formart: ip:port
具体例子如下:
./lightdb_service.py -c start -n 10.20.148.122:54333
- 此特性只支持指定一个节点,若需操作多个节点,需要多次调用 lightdb_service.py 脚本。
- 此选项与
--cn_only
,--dn_only
,--primary_only
,--standby_only
选项互斥 - 在停止主节点时,会保证备不会切为主,如需切为主,不能使用此脚本。
非root执行
原先需要 root 执行时因为需要操作 keepalive, 现在对 lightdb 用户配置了 sudo 免密权限,就不需要 root 下执行了。
不再依赖于环境变量 LTHOME
原先需要通过 LTHOME 去获取 uninstallFile.json 文件,在主机上部署了多套 LightDB 服务的时候,使用时需要修改环境变量。 现修改为不依赖于环境变量, 通过绝对或相对路径执行脚本时,会自动查找对应的 uninstallFile.json 文件。
以上是关于Hbase 节点启停过程的主要内容,如果未能解决你的问题,请参考以下文章