2012-05-06 184 views
1

我已經在僞分佈模式下設置了hadoop和hbase的單個節點,當然zookeeper和regionserver也被安裝。HBase Java客戶端:getMaster連接被拒絕

一切都很順利,但是當它通過Java客戶端API連接到hbase時,我收到一個異常。

我試了幾個小時解決這個問題,但我無法。 我可以telnet到remotemachine:60000,所以它不是端口防火牆問題。 日誌也不報告任何特別的東西。

06年12月5日19點47分27秒INFO zookeeper.ClientCnxn(從日誌debianhdfs記在HOSTFILE設置正確的IP):開放套接字連接 服務器debianhdfs/192.168 .137.135:2181 12/05/06 19:47:27信息 zookeeper.ClientCnxn:套接字連接建立到 debianhdfs/192.168.137.135:2181,啓動會話12/05/06 19:47:27 INFO zookeeper.ClientCnxn :服務器上的會話建立完成 debianhdfs/192.168.137.135:2181,sessionid = 0x13721c707ff002f, negotiated timeout = 40000 12/05/06 19: 47:28信息 client.HConnectionManager $ HConnectionImplementation:getMaster嘗試 0 of 1失敗;沒有更多的重試。 java.net.ConnectException:連接 拒絕:無更多信息 sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) sun.nio.ch.SocketChannelImpl.finishConnect(Unknown Source)at org.apache.hadoop .net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:408)at org.apache.hadoop.hbase.ipc.HBaseClient $ Connection.setupIOstreams (HBaseClient.java:328) at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:883) ) 750) at org.apache.hadoop.hbase.ipc.HBaseRPC $ Invoker.invoke(HBaseRPC.java :257) at $ Proxy4.getProtocolVersion(Unknown Source)at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:419)at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy (HBaseRPC.java:393)at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:444)at org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getMaster(HConnectionManager.java :567) 在 org.apache.hadoop.hbase.client.HBaseAdmin(HBaseAdmin.java:95) 在 org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1296) 在。 Main.main(Main.java:57)線程「main」中的異常 org.apache.hadoop.hbase.MasterNotRunningException:debianhdfs:6 0000 在 org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getMaster(HConnectionManager.java:603) 在 org.apache.hadoop.hbase.client.HBaseAdmin。(HBaseAdmin.java:95) 在在Main.main(Main。)上使用org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1296) ( )。Java的:57)

在獨立模式下,非僞分佈式我得到了相同的代碼以下異常:

06年12月5日20時32分49秒INFO zookeeper.ClientCnxn:打開插座連接 到服務器debianhdfs/192.168.137.135:2181 12/05/06 20:32:49信息 zookeeper.ClientCnxn:套接字連接建立到 debianhdfs/192.168.137.135:2181,啓動會話12/05/06 20:32 :49 INFO zookeeper.ClientCnxn:服務器上的會話建立完成 debianhdfs/192.168.137.135:2181,sessionid = 0x1 372210f8fe0004, negotiated timeout = 40000 12/05/06 20:32:49信息 client.HConnectionManager $ HConnectionImplementation:ZooKeeper 可用但未找到活動的主位置12/05/06 20:32:49信息 client.HConnectionManager $ HConnectionImplementation:getMaster嘗試 0 of 1失敗;沒有更多的重試。 org.apache.hadoop.hbase.MasterNotRunningException在 org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getMaster(HConnectionManager.java:564) 在 org.apache.hadoop.hbase.client.HBaseAdmin。( HBaseAdmin.java:95) 在 org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1296) 在線程 「主要」 組織Main.main(Main.java:57)異常。 apache.hadoop.hbase.MasterNotRunningException org.apache.hadoop.hbase.client.HConnectionManager $ HConnectionImplementation.getMaster(HConnectionManager.java:601) at org.apache.hadoop.hbase.client.HBaseAdmin。(HBaseAdmin.java :95) 在 org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:1296) 在Main.main(Main.java:57)

Configuration config = HBaseConfiguration.create(); 
    config.set("hbase.zookeeper.quorum", "debianhdfs"); 
     config.set("hbase.zookeeper.property.clientPort","2181");  

    HBaseAdmin.checkHBaseAvailable(config); 

回答

1

既然你是在運行獨立的,爲什麼不嘗試使用首先運行HBase的zookeeper?由於HBase在獨立模式下管理自己的本地動物園管理員,使用它可能會降低遇到錯誤的機率,並且由於您管理的程序較少,因此您可以更輕鬆地排除故障。

爲了讓HBase的運行其自己的ZK例如,頭${HBASE_HOME}/conf/hbase-env.sh,滾動一路底部,並確保有一條線export HBASE_MANAGES_ZK=true,或該行被註釋掉了(因爲默認情況下HBase的管理自己的ZK)