天天看点

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

   我们都知道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。所有其他未成功的节点则<b>simply loop around  the znode</b>并且等待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. <b>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. (既然创建失败,又怎么删除?)</b>” 

    在完全分布式hbase集群上启动master 需要满足它的配置要和集群中其他节点的配置一样。集群中的master节点通常和集群中的其他节点都共用一套配置信息。一旦你确定系统的配置信息已经配置正确,就可以执行如下语句:

$ <b>./bin/hbase-daemon.sh start master</b>

日志如下:

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:<b> another master is the active master, rac3:60000; waiting to become the next active master</b>

   假设集群中已经有了一个master正在运行,执行上述命令将会带来如下情况:新起来的master会等待当前的znode被删除。如果你想要在一个 以自动运行的方式<b>(in an automated fashion )</b>启动多个master并且指定一个特定的机器作为当前master的宿主机。可以使用如下命令:

$ <b>./bin/hbase-daemon.sh start master --backup</b>

使用 --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

<b>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 机!</b>

2012-02-01 15:57:05,425 info org.apache.hadoop.hbase.master.activemastermanager: another master is the active master, rac1:60000; <b>waiting to become the next active master</b>

   使用带--backup 参数启动的master 将会等待特定的master 进程比如: 使用start-hbase.sh  脚本启动的或者不带--backup参数的<b>hbase-daemon.sh start master 命令启动的master 在zookeeper中创建</b> /hbase/master znode。一旦特定的master 进程创建znode成功,由于现在集群中已经有了master了,所以那些以--backkup 模式启动的master则会进入一个空闲模式!

总结:

   其实两种启动方式的差别是在于对zookeeper上的master 创建的znode 的处理方式和之后进入的状态。start master是等待znode被删除,而start master --backup 是以休眠的方式等待znode 被删除。

------------------------------------------------

目前只研究或者理解到这里,如有错误,请各位朋友指正。。

继续阅读