在hbase shell中輸入命令無響應並報錯

今天將單機的hbase加入hadoop集羣中,啓動hbase表現很正常。執行status長時間無響應。一段時間後報錯:ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times。java

而且訪問hbase界面的60010端口(http://node1:60010/master-status)也沒法打開:node



查看日hbase/logs中日誌後。在文件hbase-hadoop-master-node1.out中出現了以下一行:shell

14/10/05 22:25:52 WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpe
cted error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574
)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocket
NIO.java:350)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)
14/10/05 22:25:53 INFO zookeeper.ClientCnxn: Opening socket connection to server
 node1/10.0.0.101:10086. Will not attempt to authenticate using SASL (沒法定位登
配置)

原來是個人hbase/conf下的hbase-site.xml裏的配置:apache

<property>
    <name>hbase.rootdir</name>
    <value>hdfs://node1:10086/hbase</value>
</property>

和hadoop/conf裏的core-site.xml裏的安全

  <property>
    <name>fs.default.name</name>
    <value>hdfs://node1:9000</value>
  </property>

不一致。必須保證兩文件中地址和端口一致。都改爲9000端口就行了。socket

執行命令:oop

[hadoop@node1 bin]$ ./hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.23, rf42302b28aceaab773b15f234aa8718fff7eea3c, Wed Aug 27 00:54:09 UTC 2014
hbase(main):001:0> status
1 servers, 0 dead, 2.0000 average load

訪問http://node1:60010頁面打開正常。 spa


ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times。.net

出現上面這個錯誤通常有哪幾種狀況呢?日誌

       若是在hbase的配置文件中將rootdir屬性設爲hdfs,若是hbase與hadoop以前RPC協議不一致就會致使了這個問題的發生。

1.你能夠檢查hadoop的服務進程是否啓動。

2.也能夠查看他們二者間版本是否一致(如:查看hbase/lib下的hadoop-core文件的版本爲hadoop-core-1.0.4.jar,而你的hadoop根目錄下是hadoop-core-1.0.3.jar ,則不一致),若是不一致你能夠將hadoop/hadoop-core-*.jar拷貝到hbase/lib/下。

3.另外能夠查看是不是以安全模式啓動的hadoop(命令:hadoop dfsadmin -safemode get查看安全模式狀態),若是是開啓的則關閉(命令:hadoop dfsadmin -safemode leave離開安全模式)。

4.固然,還有一種是二者間主機的系統時間不一致致使的(好比時區設定不一致,致使時間相差過大)。


固然解決這樣的問題仍是得查看相關日誌,從日誌文件入手,你才能知道究竟是哪種狀況。好比一樣是報上面的錯誤,而查過日誌後,纔會發現個人問題是端口不一致致使的。

相關文章
相關標籤/搜索