21

http://hbase.apache.org/book.html#quickstartという記事に従って、Hbase をスタンドアロン モードでデプロイしようとしています。バージョンは 0.92.1-cdh4.1.2 です

しかし、テーブルを作成しようとすると、次のエラーが発生します。

エラーメッセージ:

    13/04/01 14:07:10 ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries
13/04/01 14:07:10 WARN zookeeper.ZKUtil: hconnection Unable to set watcher on znode /hbase/master
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master
    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:1021)
    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:154)
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.watchAndCheckExists(ZKUtil.java:226)
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker.start(ZooKeeperNodeTracker.java:82)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.java:580)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:569)

出力ログ:

13/04/01 14:06:39 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=localhost:2181 sessionTimeout=180000 watcher=hconnection
13/04/01 14:06:39 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 10231@localhost
13/04/01 14:06:39 INFO zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (Unable to locate a login configuration)
13/04/01 14:06:39 WARN zookeeper.ClientCnxn: Session 0x0 for server null, unexpected 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:599)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)
13/04/01 14:06:39 WARN zookeeper.RecoverableZooKeeper: Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid

私の構成:

  1. hbase-env.sh に JAVA_HOME を追加
  2. hbase_site.xml

    <name>hbase.rootdir</name>
    
    <value>file:///home/hadoop/data</value>
    

    <name>hbase.zookeeper.property.dataDir</name>
    
    <value>file:///home/hadoop/zookeeper</value>
    

/etc/hosts を次のように変更しようとしました (oracle はホスト名です)。

127.0.0.1   localhost oracle

また

[server ip]   localhost oracle

しかし、これらは私にはうまくいきません。

私の正確なコードは次のとおりです。

[usr@oracle bin]$ ./start-hbase.sh 
starting master, logging to /home/hadoop/hbase-0.94.6/bin/../logs/hbase-usr-master-oracle.out
[usr@oracle bin]$ hbase shell
13/04/01 14:57:55 WARN conf.Configuration: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.92.1-cdh4.1.2, rUnknown, Thu Nov  1 18:02:07 PDT 2012

hbase(main):001:0> create 'test','cf'

前もって感謝します!

4

12 に答える 12

8

構成に欠落hbase.zookeeper.quorumしているようです。この HBase ガイドの章を確認してください。役立つ場合があります: http://hbase.apache.org/book/zookeeper.html

また、zookeeper が正しいポートで開始されていること、および (より頻繁に発生する) 正しい IP インターフェイスを確認してください。

于 2013-05-19T17:57:49.253 に答える
3

あなたがMacを使っているかどうかはわかりませんが、私もこの問題を抱えていました。.DS_STORE ファイルが -ROOT- リージョン サーバーのフォルダーにあり、接続例外が発生したことが原因であることが判明しました。非常に奇妙な!

于 2014-07-24T10:48:04.897 に答える
3

HBase 1.2.3 では、スタンドアロン モードで「ZooKeeper が存在し、4 回の再試行後に失敗しました」というほぼ同じエラーが発生しました。これは、ポート 2181 に接続する権限がない状態で ./start-hbase.sh を実行したことが原因でした。解決策は非常に単純であることが判明しました。

sudo ./start-hbase.sh

念のため、hbase-site.xml の構成は次のとおりです。

<configuration>
   <property>
      <name>hbase.rootdir</name>
      <value>file:///home/hadoop/HBase/HFiles</value>
   </property>
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/zookeeper</value>
   </property>
</configuration>
于 2016-12-14T13:30:45.180 に答える
2

エラー " ERROR zookeeper.RecoverableZooKeeper: ZooKeeper exists failed after 3 retries " は、おそらくzookeeper実行していないことを示しています。

$ jps

このコマンドは、マシン上のすべての Java プロセスを一覧表示します。つまり、想定される出力は次のようになります。セットアップしようとしているスタンドアロン HBase セットアップの場合 (左側の列の数字、つまり pid は無視してください):

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer

出力にHQuorumPeer- がない場合は、飼育係が実行されていないことを示します。

Zookeeperは、HBase クラスターを管理するために必要です。


解決策:

HBase ディレクトリで、最初に HBase を停止します。

$ ./bin/stop-hbase.sh

「スタンドアロン HBase」の例を実行しようとしている場合は、例で提供されている最小限の設定に固執してください。

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/adio/workspace/hadoop/hbase/directories/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/adio/workspace/hadoop/hbase/directories/zookeeper</value>
  </property>
</configuration>

つまりconf/hbase-site.xml、上記のコンテンツが必要です。

設定したら、HBase を再起動します。

$ ./bin/start-hbase.sh

PS誰でもこれらの手順を実行しても問題が解決しない場合は、コメント セクションに問題を残してください。


関連する回答が少ない: 1 2 3

于 2016-04-13T10:34:36.117 に答える
1

hbase-site.xmlconfにエラーがあるようです。クイックスタートドキュメントによると、スタンドアロンの HBasehbase-site.xmlは次のようになります。

<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>

file://また、Zookeeper の構成にはありません。また、HBase の起動に失敗した場合は、hbase と Zookeeper を保存しているファイルを削除する必要があります。上記の構成によれば、 と の下/home/testuser/hbaseにあるすべてのファイルを削除する必要があります/home/testuser/zookeeper。ログのエラー情報を確認してみてください。適切なconfがあり、にJAVA_HOME変数を追加すると、このエラーが修正されましたhbase-env.sh

于 2016-12-02T06:31:06.670 に答える
1

hbaseのセットアップ中にもこの問題に遭遇しました。数分後、次のコマンドを実行して hbase を開始するのを忘れていたことに気付きました。

hbase-1.1.2/bin/start-hbase.sh

このコマンドを実行した後、hbase シェルは正常に機能しました。

于 2016-01-11T11:57:27.597 に答える
1

stop-hbase.sh で hbase を停止し、zookeeper フォルダーを見つけて、フォルダーの内容を空にします。次に、hbase と hbase シェルを再起動します。これで問題が解決しました

于 2015-02-25T11:36:05.833 に答える
0

私も同じ問題を抱えていました。hbase.rootdir と hbase.zookeeper.property.dataDir の両方のフォルダーで所有者とグループを適切に設定します。両方のフォルダーに 755 のアクセス許可を与えます。

sudo chown -R hadoop_user:hadoop_user_group home/hadoop/data
sudo chmod -R 755 home/hadoop/data
于 2016-03-29T11:35:49.527 に答える
0

問題は、' hbase.zookeeper.property.dataDir ' プロパティの下の 'hbase-site.xml' にあります。

  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/lib/hbase/zookeeperdata</value>
  </property>

注: このプロパティでは、「LOCAL」ファイル システムのパスを設定します。

HBase と ZooKeeper がデータを書き込むローカル ファイル システム上のディレクトリを指定するだけで済みます。たとえば、この場合、1) start-hbase.sh 2) hbase shell コマンドを実行した後

パス (私の場合は /usr/lib/hbase/zookeeperdata) に移動すると、myidという名前のファイルが表示されます。

検証ポイントのまとめ

1) jps を実行する には、次のプロセスでHQuorumPeer、ResourceManager、HMaster、NameNode、Main、HRegionServer、SecondaryNameNode、DataNode、Jps、NodeManagerを実行する必要があります。

2) hbase-site.xml の下で、プロパティ 'hbase.zookeeper.property.dataDir' のパスをローカル パスに設定する必要があります。つまり、フォルダはローカルに存在する必要があります。

3) start-hbase.sh および hbase shell コマンドを実行した後、-> hbase.zookeeper.property.dataDir で指定されたパスに移動します (私の例では、パスは /usr/lib/hbase/zookeeperdata です)、myid という名前のファイル存在する必要があります。

于 2016-08-10T11:03:59.867 に答える
-1

(1) を実行するだけで./$HBASE_HOME/bin/start-habse.sh、以下の例外は消えます。

org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
    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:1045)
    at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:221)
    at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:419)
    at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:905)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:648)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

 - List item
于 2016-10-02T15:58:14.713 に答える