hbase运行shell时ERROR:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing 的解决办法

  这个问题困扰了我一天多的时间,百度搜索的前几条的答案也是很扯淡的,说什么把/etc/hosts文件下的127.0.1.1改成127.0.0.1就行了,我也只能呵呵了。今天早上起得很晚,中午迪哥请我们去吃完水饺后就一直在解决这个问题,下面的这两篇文章对我帮助很大:  http://www.cnblogs.com/wukenaihe/archive/2013/03/15/2961029.html  http://www.chenyudong.com/archives/linux-ntpdate-time-synchronize.html   总的说来就是因为hadoop集群各节点的时间不一致造成的,同步之后有一个节点的时间竟然差了27437秒,这必然导致hbase数据库的shell运行失败,其余的几个节点也多多少少有些时差,我就不一一截图了。

  每次在$HBASE_HOME目录下启动bin/hbase shell就会报错。看到这个报错信息的时候我就非常奇怪,什么叫PleaseHoldException:Master is initializing?    请等一等,主节点正在启动ing。要我等可以啊,但总不能每次等完就直接挂啊。后来谷歌报错信息,很多人都是通过查看日志信息来分析的。忘了说了,我用的hadoop版本是2.5.2(本来是2.7.1,但是hbase官网说目前只有hbase1.2.x支持,可是hbase1.2.x官方还没给下载镜像,我也是日了狗了),hbase版本是1.1.2。通过ssh连接至slave1上查看RegionServer日志

  这是用cat hbase-grid-regionserver-Slave1.log  |  grep sync  命令输出的部分结果,其中的几个关键词:clock out of sync,the fifference of 68394ms > max allowed 30000ms, ClockOutOfSyncException。可以看出hbase数据库 shell运行失败的原因大概就是时钟不同步了。

      参考我给出的第二篇博客的连接,安装ntpdate, sudo apt-get install ntpdate后,运行shell命令:ntpdate  0.cn.pool.ntp.org    这个命令很简单,参数可以选择任意一个时间服务器的地址,然后重启hbase数据库:bin/stop-hbase.sh     bin/start-hbase.sh  即可。可能会出现 can't get master address from ZooKeeper错误,这可能是由于ZooKeeper不稳定造成的,我试着又重启了一下,就可以了。

  可以看到,输入list命令,没有报PleaseHoldException的错了。

原文地址:https://www.cnblogs.com/suddoo/p/4986094.html