【HBase】start master 与 start master --backup 的区别

本文介绍了HBase集群中Master节点的工作原理及如何通过配置实现Master节点的高可用性。详细解释了通过Zookeeper进行Master选举的过程,并展示了如何启动备用Master节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


    我们都知道hbase 集群中通常有一个master 节点,多个region server节点,为了防止HBase 集群中master的单点故障,可以向集群中添加一个slave master,这些新添加的master 会分布在不同的物理机器上,因此以最坏的情形来看,当前运行master的那台物理机down了,整个系统可以由backup的 master 来接管!

   在介绍如何添加master 节点之前,我们先了解一下在hbase集群中master是如何产生的.master 进程使用Zookeeper 来判断哪一个是当前活动的master:所有的master 竞争创建Zookeeper 中有一个专用的znode,第一个成功创建znode的成为集群中的当前活动的master ! 

   以上场景会发生在整个集群启动时,如果存在多个master 进程同时启动,则成功创建znode的成为集群中的master。所有其他未成功的节点则simply loop around  the znode并且等待master创建的znode消失,并触发重新竞争。下面的是来自《HBase: The Definitive Guide》的文章(有些疑问)
   “ The /hbase/master znode is ephemeral, (短暂 的?zookeeper 机制)and is the same kind the region servers use to
report their presence. When the master process that created the znode fails, ZooKeeper will notice the end of the session with that server and remove the znode accordingly, triggering the election process. (既然创建失败,又怎么删除?)” 

    在完全分布式hbase集群上启动master 需要满足它的配置要和集群中其他节点的配置一样。集群中的master节点通常和集群中的其他节点都共用一套配置信息。一旦你确定系统的配置信息已经配置正确,就可以执行如下语句:
./bin/hbase-daemon.sh start master
日志如下:
2012-02-01 15:39:42,552 INFO org.apache.hadoop.hbase.metrics: new MBeanInfo
2012-02-01 15:39:42,553 INFO org.apache.hadoop.hbase.metrics: new MBeanInfo
2012-02-01 15:39:42,553 INFO org.apache.hadoop.hbase.master.metrics.MasterMetrics: Initialized
2012-02-01 15:39:42,575 INFO org.apache.hadoop.hbase.master.ActiveMasterManager: Another master is the active master, rac3:60000; waiting to become the next active master

   假设集群中已经有了一个master正在运行,执行上述命令将会带来如下情况:新起来的master会等待当前的znode被删除。如果你想要在一个以自动运行的方式(in an automated fashion )启动多个master并且指定一个特定的机器作为当前master的宿主机。可以使用如下命令:
./bin/hbase-daemon.sh start master --backup
使用 --backup 参数的启动方式,日志信息里多了红色部分:
2012-02-01 15:57:05,413 INFO org.apache.hadoop.hbase.metrics: new MBeanInfo
2012-02-01 15:57:05,413 INFO org.apache.hadoop.hbase.master.metrics.MasterMetrics: Initialized
2012-02-01 15:57:05,414 DEBUG org.apache.hadoop.hbase.master.HMaster: HMaster started in backup mode.Stalling(停转)until master znode is written.##可能意思翻译不准,就是以空闲模式等待当前的master down 机!
2012-02-01 15:57:05,425 INFO org.apache.hadoop.hbase.master.ActiveMasterManager: Another master is the active master, rac1:60000; waiting to become the next active master
   使用带--backup 参数启动的master将会等待特定的master进程(比如: 使用start-hbase.sh  脚本启动的或者不带--backup参数的hbase-daemon.sh start master 命令启动的master在Zookeeper中创建 /hbase/master znode)。一旦特定的master进程创建znode成功,由于现在集群中已经有了master了,所以那些以--backkup模式启动的master则会进入一个空闲模式!

总结:
   其实两种启动方式的差别是在于对zookeeper上的master 创建的znode 的处理方式和之后进入的状态。start master是等待znode被删除,而start master --backup 是以休眠的方式等待znode 被删除。
------------------------------------------------
目前只研究或者理解到这里,如有错误,请各位朋友指正。。

原文地址:

http://blog.itpub.net/22664653/viewspace-715469/



<think>我们之前提到解决HBase主从节点都显示HMaster的问题,需要执行命令清理ZooKeeper中的冗余注册信息。用户现在具体询问在哪个路径下运行`hbasezkclirmr/hbase/backup-masters`命令。回答要点:1.**命令执行路径**:该命令应在HBase主节点(或任何配置了HBase环境变量的节点)上运行,且需要在HBase安装目录的`bin`目录下执行,或者确保系统PATH包含HBase的bin目录。2.**环境要求**:执行前需确保ZooKeeper服务已启动,且HBase已停止(避免数据不一致)。3.**命令解释**:`zkcli`是HBase自带的ZooKeeper客户端工具,`rmr`用于递归删除节点。4.**注意事项**:删除操作不可逆,需确认路径正确(一般为`/hbase/backup-masters`)。具体步骤:###🛠️解决方案:删除冗余HMaster注册信息1.**停止HBase集群**(避免数据冲突):```bash#在HBase主节点执行stop-hbase.sh```2.**进入HBase的bin目录**(确保命令可执行):```bashcd$HBASE_HOME/bin#$HBASE_HOME为HBase安装目录,如/usr/local/hbase```3.**执行删除命令**:```bash./hbasezkclirmr/hbase/backup-masters```-若系统PATH已包含`$HBASE_HOME/bin`,可直接运行:```bashhbasezkclirmr/hbase/backup-masters```4.**确认删除成功**(可选):```bash./hbasezkclils/hbase#查看/hbase节点下是否还存在backup-masters```5.**重启HBase集群**:```bashstart-hbase.sh```###⚠️注意事项-**删除操作风险**:`rmr`命令会彻底删除ZooKeeper中的`/hbase/backup-masters`节点,可能导致备用HMaster信息丢失(若需高可用,应在修正配置文件后重新添加备用节点)。-**路径一致性**:若HBase在ZooKeeper中的根节点非默认`/hbase`,需通过`hbase-site.xml`中的`zookeeper.znode.parent`配置项确认实际路径,例如:```xml<property><name>zookeeper.znode.parent</name><value>/my-hbase</value><!--实际路径--></property>```此时删除命令应为:```bashhbasezkclirmr/my-hbase/backup-masters```###🔍验证方法重启集群后,通过HBaseWebUI(默认端口16010)或Shell命令检查角色:```bashhbaseshell>status'detailed'```预期输出:-**主节点**:显示`ACTIVEMASTER`-**从节点**:显示`REGIONSERVER`---###📚相关问题(GeneratedQuestions)1.**如何配置HBase在ZooKeeper中的根路径?**2.**HBase的zkcli工具支持哪些常用操作?**3.**备用HMaster节点应该如何正确配置?**4.**删除ZooKeeper节点后如何恢复HBase集群状态?**</think> 针对您的问题,**`hbase zkcli rmr /hbase/backup-masters` 命令应在 HBase 的安装目录下的 `bin/` 路径中执行**。以下是详细操作步骤和原理说明: --- ### 🔧 操作步骤(解决主从节点均为 HMaster 问题) #### 1. **定位 HBase 安装目录** - 默认路径通常为 `/usr/local/hbase` 或 `/opt/hbase` - 可通过环境变量查找: ```bash echo $HBASE_HOME ``` 若未设置,检查启动脚本: ```bash which start-hbase.sh ``` #### 2. **进入命令执行路径** ```bash cd $HBASE_HOME/bin # 关键步骤!必须在此目录执行 ``` #### 3. **停止 HBase 集群** ```bash ./stop-hbase.sh # 在 bin 目录执行 ``` #### 4. **清理冗余注册信息** ```bash ./hbase zkcli rmr /hbase/backup-masters # 删除冗余 HMaster 注册 ``` > 此命令会递归删除 ZooKeeper 中 `/hbase/backup-masters` 节点(存储多余的 HMaster 注册信息) #### 5. **修改配置文件** - 在 `$HBASE_HOME/conf/regionservers` 中**移除主节点名称**(参考前文) - 同步到所有节点: ```bash scp $HBASE_HOME/conf/regionservers root@slave-node:/$HBASE_HOME/conf/ ``` #### 6. **重启集群** ```bash ./start-hbase.sh # 在 bin 目录启动 ``` --- ### ⚙️ 原理说明 1. **路径依赖性**: `hbase zkcli` 是 HBase 自带的 ZooKeeper 客户端工具,需依赖 `$HBASE_HOME/bin/` 下的环境变量和库文件。直接系统路径执行可能因 `CLASSPATH` 缺失导致失败。 2. **ZooKeeper 的作用**: HBase 通过 ZooKeeper 管理集群状态: - `/hbase/backup-masters`:存储备用 HMaster 节点列表 - `/hbase/master`:存储主 HMaster 地址 **主节点被误加到 `regionservers` 时**,会同时在两个路径注册,导致角色冲突[^2]。 3. **删除冗余数据的必要性**: `rmr /hbase/backup-masters` 强制清除错误的 HMaster 注册,使 ZooKeeper 在重启后根据配置文件重建正确结构。 --- ### ✅ 验证方法 1. **检查进程**(主节点): ```bash jps | grep -E 'HMaster|HRegionServer' ``` **期望输出**:`HMaster`(不应出现 `HRegionServer`) 2. **Web UI 验证**: 访问 `http://主节点:16010`: - **Master** 页面:显示 1 个 Active Master - **Region Servers** 页面:显示所有子节点 --- ### 📚 相关问题(Generated Questions) 1. **如何诊断 ZooKeeper 中 HBase 的注册数据?** > 提示:使用 `zkCli.sh` 连接后执行 `ls /hbase`[^2] 2. **误删 ZooKeeper 的 `/hbase` 节点会有什么后果?如何恢复?** > 提示:会导致元数据丢失,需用 `hbase zkcli create /hbase` 重建 3. **HBase 主节点故障时,ZooKeeper 如何触发备节点切换?** > 提示:通过 `ActiveMasterManager` 监听机制实现[^2] 4. **除了 `zkcli`,还有哪些工具可以操作 ZooKeeper 的 HBase 数据?** > 提示:官方 `ZooKeeperMain` 或第三方工具如 `ZooInspector` [^1]: HBase 官方配置文档 [^2]: HBase 分布式架构 ZooKeeper 协同机制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值