私は完全に夢中になります:
Hadoop/Hbaseをインストールし、すべてが実行されています。
/opt/jdk1.6.0_24/bin/jps
23261 ThriftServer
22582 QuorumPeerMain
21969 NameNode
23500 Jps
23021 HRegionServer
22211 TaskTracker
22891 HMaster
22117 SecondaryNameNode
21779 DataNode
22370 Main
22704 JobTracker
疑似分散環境。
hbaseシェル
'list'を実行して正しい結果を出している。
hbase Shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.90.1-cdh3u0, r, Fri Mar 25 16:10:51 PDT 2011
hbase(main):001:0> status
1 servers, 0 dead, 8.0000 average load
Ruby&thriftを介して接続すると、すべてが正常に機能します。データを追加し、システムに取り込み、クエリ/スキャンを実行できます。すべてが正常に見えます。
ただし、Javaに接続する場合:
groovy> import org.Apache.hadoop.hbase.HBaseConfiguration
groovy> import org.Apache.hadoop.hbase.client.HBaseAdmin
groovy> conf = HBaseConfiguration.create()
groovy> conf.set("hbase.master","127.0.0.1:60000");
groovy> hbase = new HBaseAdmin(conf);
Exception thrown
org.Apache.hadoop.hbase.ZooKeeperConnectionException: org.Apache.hadoop.hbase.ZooKeeperConnectionException: org.Apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getZooKeeperWatcher(HConnectionManager.Java:1000)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.Java:303)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.Java:294)
at org.Apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.Java:156)
at org.Apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.Java:84)
私は原因を突き止めようとしてきましたが、まったく手がかりがありません。すべてが正しくインストールされているようです。
netstat -lnp|grep 60000
tcp6 0 0 :::60000 :::* LISTEN 22891/Java
同様にうまく見えます。
# telnet localhost 60000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
何かを入力して入力すると接続して停止します(それがアイデアかどうかはわかりませんが、9090の節約でも同じです)。
誰か助けてもらえますか?
これはZookeeper(ZK)エラーです。 HBaseクライアントはZookeeperから/ hbaseノードを取得しようとして失敗します。
ZKダンプはHBaseマスターWebインターフェイスから取得できます。 ZKへのすべての接続を確認し、何かがそれらを使い果たしているかどうかを把握する必要があります。
他のことに飛び込む前に、ZKクラスターを再起動して、問題が解決するかどうかを確認してください。 (単一のクライアントでそれを見るのは奇妙です)。
HBaseには、ZKへの接続数を増やす設定があります。それは
hbase.zookeeper.property.maxClientCnxns
最近、デフォルトの接続数に関連するいくつかの更新(以下を参照)がありました(すべてのデフォルト構成を持つhbase-default.xmlファイルがあります)。これをhbase-site.xmlファイル(HBase conf dirの下)でオーバーライドして、100以上に上げることができます。ただし、実際の問題をこのようにマスクしていないことを確認してください。単一のクライアントでこの問題が発生することはありません。
同様の状況が発生しましたが、HBase-0.90にアップグレードした後、map-reduceジョブからの重い操作中に発生していました。
ここにあなたの問題に関連するいくつかの問題があります:
それでもわからない場合は、hbase-usersリストにメールを送信するか、freenodeの#hbaseチャネルに参加してライブの質問をしてください。
これは、クライアント側で提供されたhbase-site.xmlで「zookeeper.znode.parent」に誤った値が定義されている場合、またはカスタムAPIが記述されている場合、「zookeeper.znode.parent」が誤って次のように更新された場合に発生します。間違った場所。たとえば、デフォルトの「zookeeper.znode.parent」は「/ hbase-unsecure」に設定されていますが、クラスターで設定したものではなく「/ hbase」と言うように誤って指定すると、これが発生します。 HBaseクラスターに接続しようとしたときに例外が発生しました
問題は、実際には(何らかの理由で...詳細はわかりませんが)ファイアウォールがZookeeperとの通信に必要なポートの1つをブロックしていたことでした。コマンドラインからは機能しましたが、私のアプリからは機能しませんでした。しかし、ファイアウォールを無効にすると、突然すべて正常に機能しました。
ご協力ありがとうございました!
Hbaseデータベースへの接続で同じ問題が発生しました。
/etc/hosts
にdbマシンのアドレスが間違っていたことがわかりました。
ステップ1:まず、「jps」コマンドを使用して、HBaseマスターノードが実行されているかどうかを確認します。
ステップ2:「stop-all.sh」コマンドを使用して、Hadoopクラスターで実行中のすべてのサービスを停止します。
この問題に関する詳細については、以下をご覧ください。
http://commandstech.com/hbase-error-keeperrorcode-connectionloss-for-hbase-in-cluster/
ステップ3:「start-all.sh」コマンドを使用して、実行中のすべてのサービスを開始します。
ステップ4:「jps」コマンドを使用してサービスがHBaseマスターが機能していることを示しているかどうかを確認し、そうでない場合は以下のステップを実行します。
ステップ5:「Sudosu」を使用してrootユーザーに移動する
ステップ6:Goto hbaseシェルファイルパス: "cd /usr/lib/habse-1.2.6-hadoop/bin/start-hbase.sh"
手順7:「hbaseShell」コマンドを使用してhbaseShellを開く
ステップ8:「list」コマンドを使用します。