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的錯了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM