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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介:
   我们都知道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 被删除。
------------------------------------------------
目前只研究或者理解到这里,如有错误,请各位朋友指正。。
相关文章
|
关系型数据库 MySQL 分布式数据库
Hbase与MySQL对比,区别是什么?
Hbase与MySQL对比,区别是什么?
895 2
|
缓存 Java Linux
java操作hbase报错:KeeperErrorCode=NoNode for /hbase-unsecure/master
java操作hbase报错:KeeperErrorCode=NoNode for /hbase-unsecure/master
858 2
|
存储 SQL 关系型数据库
HBase与传统关系型数据库的区别是什么?
HBase与传统关系型数据库的区别是什么?
723 0
|
存储 分布式计算 监控
分布式数据库HBase的基本概念和架构之基本架构的Master
分布式数据库HBase是一个开源的分布式数据库系统,是Apache Hadoop生态系统的重要组成部分。
487 0
|
SQL 存储 传感器
大数据大比拼:Hive vs HBase,你知道两者的区别和适用场景吗?
大数据大比拼:Hive vs HBase,你知道两者的区别和适用场景吗?
5151 0
|
Shell 分布式数据库 Android开发
HBase的Dead节点问题&&Hbase创建表时报“org.apache.hadoop.hbase.PleaseHoldException: Master is initializing”错误
HBase的Dead节点问题&&Hbase创建表时报“org.apache.hadoop.hbase.PleaseHoldException: Master is initializing”错误
332 0
HBase的Dead节点问题&&Hbase创建表时报“org.apache.hadoop.hbase.PleaseHoldException: Master is initializing”错误
|
SQL 存储 分布式计算
Hive、Hbase、mysql的区别
1、Hive和HBase的区别   1)hive是sql语言,通过数据库的方式来操作hdfs文件系统,为了简化编程,底层计算方式为mapreduce。   2)hive是面向行存储的数据库。   3)Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。   4)HBase为查询而生的,它通过组织起节点內所有机器的內存,提供一個超大的內存Hash表 。   5)hbase不是关系型数据库,而是一个在hdfs上开发的面向列的分布式数据库,不支持sql。   6)hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引
845 0
|
分布式数据库 Hbase
hbase_异常_01_Hbase: Failed to become active master
一、异常现象 启动hbase之后,抛出异常,异常信息如下: master.HMaster: Failed to become active master hbase java.net.ConnectException: Call From to 9000 failed on connection exception: java.
3039 0