HBase是否支持配置多个HMaster节点?
关于HBase多HMaster节点部署的解答
首先直接给出明确结论:
- HBase完全支持配置2个以上的HMaster节点,不存在只能部署1主1备两个节点的限制
- 它的高可用选举逻辑和HDFS多NameNode HA有相似之处,但整体架构有明显区别,不能完全划等号。
HMaster高可用的工作原理
HBase的HMaster高可用能力完全基于ZooKeeper实现,没有额外的中心化协调组件:
- 所有HMaster进程启动后,第一时间会尝试创建ZooKeeper上的
/hbase/master临时节点,第一个创建成功的节点自动成为Active主节点,负责处理集群元数据操作、Region调度、负载均衡等核心工作 - 其余没抢到锁的HMaster会自动进入Standby热备状态,持续监听
/hbase/master节点的变化,不会对外提供任何服务 - 当Active HMaster宕机、网络断连导致和ZooKeeper的会话超时后,对应的临时节点会被ZooKeeper自动删除,所有Standby节点收到节点删除的通知后会立刻重新发起锁竞争,最快抢到锁的节点会晋升为新的Active节点接管集群,整个故障切换过程通常在秒级。
你完全可以根据集群的可靠性需求部署3个、5个甚至更多HMaster节点,备节点平时只会同步主节点的元数据状态,资源占用极低,不会给集群带来额外负担。
和HDFS多NameNode部署的差异
很多人会把HBase多HMaster和HDFS多NameNode做类比,两者核心区别很明显:
- HBase的多HMaster始终是一主多备架构:同一时间全局永远只有1个Active HMaster工作,其余节点全是备份,不存在多个HMaster同时分管不同业务、同时对外服务的模式
- HDFS的多NameNode除了支持一主多备的HA模式外,还支持联邦部署模式:不同NameNode可以分管不同的目录命名空间,同时对外提供读写服务,这一能力HBase目前不支持。
多HMaster配置方式
配置多HMaster没有特殊参数要求,操作非常简单:
- 在所有计划运行HMaster的节点上部署版本一致的HBase,保证所有节点的
hbase-site.xml配置一致、ZooKeeper集群连接地址正确 - 在HBase配置目录的
backup-masters文件中,逐行写入所有备HMaster节点的主机名,执行集群启动脚本时会自动在这些节点上拉起Standby HMaster进程 - 集群运行过程中也可以随时在任意符合条件的节点上执行
hbase-daemon.sh start master命令手动启动新的HMaster,新节点会自动加入选举,不会对运行中的集群造成任何影响。
内容的提问来源于stack exchange,提问作者robocon20x
相关产品推荐
相关产品推荐

