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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:    我们都知道hbase 集群中通常有一个master 节点,多个region server节点,为了防止HBase 集群中master的单点故障,可以向集群中添加一个slave master,这些新添加的master 会分布在不同的物理机器上,因此以最坏的情...
   我们都知道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 被删除。
------------------------------------------------
目前只研究或者理解到这里,如有错误,请各位朋友指正。。

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8月前
|
缓存 前端开发 关系型数据库
DB galera cluster 全部停止后再次启动
环境:centos6.8 mysql5.7.25
43 0
|
9月前
|
分布式计算 Hadoop
Call From master.hadoop/192.168.31.149 to master.hadoop:8020 failed on connection exception
学习hadoop新手易犯错误:Call From master.hadoop/192.168.31.149 to master.hadoop:8020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
371 0
|
Linux 流计算
Flink - 本地执行 Failed to start the Queryable State Data Server
Flink 本地执行任务报错 Failed to start the Queryable State Data Server 以及 Unable to start Queryable State Server. All ports in provided range are occupied. 根据报错分析是因为本地端口被占用,没有足够端口供 Flink 本地客户端启动,所以解决方法就是处理被占用的端口。...
116 0
Flink - 本地执行 Failed to start the Queryable State Data Server
|
MySQL 关系型数据库
master/slave 相同server_id引起的同步失败
昨天在做MySQL SwitchOver遇到一个诡异的想象,切换前后的结构图如下: 当我把一切都切换好之后,应其他需求,重启了04上的mysql,然后show slave status\G发现报错: Last_IO_Error: Fatal error: The slav...
917 0
|
Hbase 分布式数据库