Hbaseのマルチノードクラスターをセットアップしようとしています。私が奴隷でjpsをするとき、私は得る
5780 Jps
5558 HQuorumPeer
5684 HRegionServer
1963 DataNode
2093 TaskTracker
同様にマスターで私は得る
4254 SecondaryNameNode
15226 Jps
14982 HMaster
3907 NameNode
14921 HQuorumPeer
4340 JobTracker
EVerythingは適切に実行されます。しかし、hbaseShellでテーブルを作成しようとすると。エラーが発生します
ERROR: org.Apache.hadoop.hbase.PleaseHoldException: org.Apache.hadoop.hbase.PleaseHoldException: Master is initializing
スレーブのregionserverログ(リージョンサーバーが実行されている場所):
2013-06-11 13:09:53,119 INFO org.Apache.hadoop.hbase.regionserver.HRegionServer: Attempting connect to Master server at localhost,60000,137093$
2013-06-11 13:10:53,190 WARN org.Apache.hadoop.hbase.regionserver.HRegionServer: Unable to connect to master. Retrying. Error was:
org.Apache.hadoop.hbase.ipc.HBaseClient$FailedServerException: This server is in the failed servers list: localhost/127.0.0.1:60000
at org.Apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.Java:425)
at org.Apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.Java:1124)
at org.Apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.Java:974)
at org.Apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.Java:86)
at $Proxy8.getProtocolVersion(Unknown Source)
at org.Apache.hadoop.hbase.ipc.WritableRpcEngine.getProxy(WritableRpcEngine.Java:138)
at org.Apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.Java:208)
at org.Apache.hadoop.hbase.regionserver.HRegionServer.getMaster(HRegionServer.Java:2037)
at org.Apache.hadoop.hbase.regionserver.HRegionServer.reportForDuty(HRegionServer.Java:2083)
at org.Apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.Java:744)
at Java.lang.Thread.run(Thread.Java:722)
2013-06-11 13:10:53,391 INFO org.Apache.hadoop.hbase.regionserver.HRegionServer: Attempting connect to Master server at localhost,60000,137093$
参考までに、マスターとスレーブの両方で/ etc/hostsファイルも処理しました。
127.0.0.1 localhost
127.0.0.1 naresh-PC
/ etc/hostsファイル127.0.1.1をnaresh-PCに再度変更しました。しかし、それでもこのエラーが発生します
2013-06-11 14:51:17,781 INFO org.Apache.hadoop.hbase.regionserver.HRegionServer: Attempting connect to Master server at naresh-pc,60000,137094$
2013-06-11 14:52:17,817 WARN org.Apache.hadoop.hbase.regionserver.HRegionServer: Unable to connect to master. Retrying. Error was:
Java.net.UnknownHostException: unknown Host: naresh-pc
at org.Apache.hadoop.hbase.ipc.HBaseClient$Connection.<init>(HBaseClient.Java:276)
at org.Apache.hadoop.hbase.ipc.HBaseClient.createConnection(HBaseClient.Java:255)
at org.Apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.Java:1111)
at org.Apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.Java:974)
at org.Apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.Java:86)
at $Proxy8.getProtocolVersion(Unknown Source)
at org.Apache.hadoop.hbase.ipc.WritableRpcEngine.getProxy(WritableRpcEngine.Java:138)
at org.Apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.Java:208)
at org.Apache.hadoop.hbase.regionserver.HRegionServer.getMaster(HRegionServer.Java:2037)
at org.Apache.hadoop.hbase.regionserver.HRegionServer.reportForDuty(HRegionServer.Java:2083)
at org.Apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.Java:744)
at Java.lang.Thread.run(Thread.Java:722)
Zookeeperのすべての状態をクリアしてみてください。
私は同じ問題を抱えていて、このアプローチに従いました、そしてそれはうまくいきました。
マスターを指すようにスレーブノードの構成を変更する必要があります。現在、ローカルホストを指しており、実際のマスターに接続していません。
"org.Apache.hadoop.hbase.ipc.HBaseClient $ FailedServerException:このサーバーは失敗したサーバーのリストにあります:localhost/127.0.0.1:60000 at"
Docker内で独自のクラスターをホストしています。これが私の場合にうまくいったことです。 HBaseログファイルでエラーを確認したところ、「マスターが使用する別のホスト名を渡してくれた」ことがわかりました。
`[root@docker-iop bin]# grep ERROR /var/log/hbase/hbase-hbase-regionserver-bi-mgmt01.local.log
2016-10-06 00:05:29,816 ERROR [regionserver/bi-mgmt01.local/111.11.2.3:16020] regionserver.HRegionServer: Master passed us a different hostname to use; was=my-Host-name, but now=111.22.33.444'
My-Host-nameをhostsファイルの111.22.333.444にマップし、HBaseを再起動すると、機能しました。
以下の構成の完全分散hbaseクラスターでも同じ問題が発生しました。
RCA:クラスターの開始時に、バックアップマスターノードの開始が試行されました。
解決策すべてのhbaseノードで$ HBASE_HOME/conf/backup-mastersを空にして、バックアップマスターを削除しました。
そのため、バックアップマスターなしでクラスターを実行していました。
マスターノードとマスターノードがリージョンサーバーとしても機能してはいけないのだろうか?ただし、HBaseのドキュメントには別の方法が記載されています。