web-dev-qa-db-ja.com

HBaseスタンドアロンが接続に失敗しました(テーブルの作成に失敗しました)

この記事に従ってスタンドアロンモードでHbaseをデプロイしようとしています: http://hbase.Apache.org/book.html#quickstart 。バージョンは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'

前もって感謝します!

20
Hypnos

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

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

7

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

3
John61590

構成に関連している可能性があります。最初に、HBase tar( http://hbase.Apache.org/book/quickstart.html )をダウンロードしてHBaseを実行します。リンクをたどって設定を行うことはせず、ダウンロードしてHBaseを起動し、「HBase Shell」を実行しました。しかし、テーブルを作成するときに、あなたが言ったようなエラーが発生しました。 Macを使用しているので、Mac上のHBaseインストールを検索します。 「brew install hbase」を使用してHBaseをインストールすることを採用します( http://chase-seibert.github.io/blog/2013/02/01/getting-starting-with-hbase-and-pig.html )。インストールが完了したら、テーブルを再作成します。成功。

したがって、エラーを再検討してください。エラーは、Java_HOMEまたはHBase上の他の構成とリンクしている必要があります。この方法で答えを見つけると役立つ場合があります。

2
Haimei

HBase 1.2.3でも、スタンドアロンモードでほぼ同じエラー「4回の再試行後にZooKeeperが存在します」が発生しました。これは、ポート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>
2
APW

stop-hbase.shでhbaseを停止し、zookeeperフォルダーに移動して、フォルダーの内容を空にします。次に、hbaseおよびhbase Shellを再起動します。私のために問題を解決しました

1
Roshan V Jose

hbase-site.xml confにエラーがあるようです。クイックスタート document によると、スタンドアロンのHBase hbase-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>

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

1
einverne

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

hbase-1.1.2/bin/start-hbase.sh

このコマンドを実行した後、hbase Shellは問題なく動作しました。

1
texens

私も同じ問題を抱えていました。両方のフォルダーのhbase.rootdirとhbase.zookeeper.property.dataDir.Give 755の両方のフォルダーに所有者とグループを適切に設定してください。

Sudo chown -R hadoop_user:hadoop_user_group home/hadoop/data
Sudo chmod -R 755 home/hadoop/data
0
Saurabh

エラー「ERROR zookeeper.RecoverableZooKeeper:ZooKeeper exists exists after 3 retries」は、おそらくzookeeperが実行されていないことを示しています-前HBaseシェルを見つめると、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

P.S。これらの手順を実行しても問題が解決しない場合は、コメント欄に問題を残してください。


いくつかの関連する回答: 12

0
Nabeel Ahmed

問題は '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という名前のファイルです。存在する必要があります。

0
KP Fingh

/ etc/hostsファイルを編集します... 2行目の127.0.1.1を127.0.0.1に変更してから、Hbaseを起動します...正常に動作するはずです。機能しない場合は、このリンクの手順を試してください http://lets-do-something-big.blogspot.in/2014/01/hbase-installation-on-ubuntu-lubuntu.html

0
Harry