UbuntuでHBASE0.94.8スタンドアロンモードを使用しています。正常に動作しているので、Hbase-Shellですべての操作を実行できます。しかし、システムのログを記録した後、次のエラーが発生します
15/07/28 15:10:30 ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries
15/07/28 15:10:30 WARN zookeeper.ZKUtil: hconnection-0x14ed40513350009 Unable to set watcher on znode (/hbase)
org.Apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase
at org.Apache.zookeeper.KeeperException.create(KeeperException.Java:99)
at org.Apache.zookeeper.KeeperException.create(KeeperException.Java:51)
at org.Apache.zookeeper.ZooKeeper.exists(ZooKeeper.Java:1041)
at org.Apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.Java:172)
at org.Apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.Java:450)
at org.Apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker.checkIfBaseNodeAvailable(ZooKeeperNodeTracker.Java:208)
at org.Apache.hadoop.hbase.zookeeper.RootRegionTracker.waitRootRegionLocation(RootRegionTracker.Java:77)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.Java:885)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.Java:998)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.Java:896)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.Java:998)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.Java:900)
at org.Apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.Java:857)
はい、確かに私はたくさん検索しました。私はいくつかの情報を見つけました ZooKeeperは3回の再試行後に失敗しました 。このエラーは、zookeeperが停止していることが原因である可能性があります。しかし、私はそれを再び再開することを知りません。 Hbase
とthrift
をもう一度起動しようとしましたが、それでも問題が発生します。
このコマンドps axww | grep QuorumPeerMain
次の出力が表示されます:
6162 pts/2 S+ 0:00 grep --color=auto QuorumPeerMain
システムを再起動すると、Hbaseが動作を開始します。しかし、私は適切な解決策が必要です。
一時的な解決策
次のコマンドを使用して、HBASEのこのプロセスをgrepします。
ps -fe grep | hbase
次に、HBASEのすべてのプロセスを強制終了します。
kill -9 4555//assuming 4555 is process id of hbase
次に、sudoとthriftを使用してhbaseを再起動すると、動作を開始しますが、永続的な解決策が必要です。サーバーでHBASEを使用している場合(ローカルマシンではないことを意味します)、毎回HBASEを再起動できないためです。
問題:
Hbaseエラーzookeeperの存在は3回の再試行後に失敗しました zookeeperクォーラムが実行されていないことを明確に示しています-最も可能性の高い原因は、conf/hbase-site.xml
のzookeeper.quorum設定との不整合である可能性があります。最小値は次のとおりです。
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/testuser/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/testuser/zookeeper</value>
</property>
</configuration>
次のセクションでは、Zookeeperが必要な理由と、それが実行されているかどうかを確認する方法について簡潔に説明します。
概要:
あなたのテキストからの前提(スタンドアロンセットアップ)-あなたは物事を混乱させています。簡単に言うと、ZookeeperはHBaseを管理し、必須の要件です。
デフォルトでは、HBase自体がzookeeperのセットアップ、start-stop(変更可能ですが)を処理します-ファイルconf/hbase-evn.sh
(hbaseディレクトリ内)を確認するには、次の行が必要です。
export HBASE_MANAGES_ZK=true
基本的に、HBaseにZookeeperの独自のインスタンスを管理する必要があるかどうかを指示します。 false
に設定されている場合は、true
に編集します。
検証のために役立つコマンドがあります(ps
を忘れてからgrep
を忘れてください):
$ jps
このコマンドは、マシン上のすべてのJavaプロセス(HBase自体はJavaアプリケーション)を一覧表示します。つまり、出力の可能性は(最小限のスタンドアロンHBaseセットアップの場合)である必要があります。
62019 Jps
61098 HMaster
61233 HRegionServer
61003 HQuorumPeer
HBaseプロセスを強制終了するのではなく、start-stopユーティリティを使用してください。
$ ./bin/stop-hbase.sh
必要な変更を加えて、再開します。
$ ./bin/start-hbase.sh
PSあなたの質問を(完全に)誤解した可能性があります。コメントでお知らせください。また返信し、正しい解決策を見つけます-今後のSO訪問者のために。
ログファイルを調べると、飼育係がポートに接続できないことがわかります。例えば、 543210
。これは単に、以前にHadoopをマシンにインストールしたことを意味するため、hbaseは以前のHadoopインストールのzookeeperを検索しようとします。既存のHadoopセットアップの名前を変更するか、システムから完全にHadoopを削除してください。 (ただし、動物園の飼育係は、削除した後でも物事を残しているようです。)
この問題はhbase
またはzookeeper
とは関係がないようです。これはシステム設定の問題です。
Mac OSXのアップデート後に同じ問題が発生します。
更新によりDNS設定が変更されたことが判明しました。私はそれをhbaseログで見ました:
2017-06-09 11:40:18,454 ERROR [main] master.HMasterCommandLine: Master exiting
Java.lang.RuntimeException: Failed construction of Master: class org.Apache.hadoop.hbase.master.HMasterCommandLine$LocalHMaster
at org.Apache.hadoop.hbase.util.JVMClusterUtil.createMasterThread(JVMClusterUtil.Java:143)
[SKIP]
at org.Apache.hadoop.hbase.master.HMaster.main(HMaster.Java:2432)
Caused by: Java.lang.NullPointerException
at org.Apache.hadoop.net.DNS.reverseDns(DNS.Java:92)
hbase-site.xml
のDNS設定を削除した後、問題は解消されました。
<!--property>
<name>hbase.zookeeper.dns.interface</name>
<value>lo0</value>
</property>
<property>
<name>hbase.regionserver.dns.interface</name>
<value>lo0</value>
</property>
<property>
<name>hbase.master.dns.interface</name>
<value>lo0</value>
</property-->
「4回の再試行後にZooKeeperが存在しますが失敗しました」というエラーがほぼ同じです。これは、ポート2181に接続する権限がない状態で./start-hbase.shを実行したことが原因でした。解決策は非常に単純であることが判明しました。
Sudo ./start-hbase.sh
NabeelAhmedの投稿と同じhbase-site.xmlの構成を使用しました。
唯一の開始動物園の飼育係の場合、 this が役に立ちます。 hbaseを開始する前に、zookeeperが稼働している必要があることをご承知おきください。
私はSudoコマンドを使用しています
hbase/bin$Sudo ./start-habase.sh