[英]HBase standalone failed to connect (fail to create table)
我試圖在本文之后以獨立模式部署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
我的配置:
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'
提前致謝!
您的配置中似乎缺少hbase.zookeeper.quorum
。 請查看這個HBase指南章節,它可能有所幫助: http : //hbase.apache.org/book/zookeeper.html
另外請檢查zookeeper是否在正確的端口上啟動(更常見的是)正確的IP接口。
我不確定你是不是在Mac上,但我也有這個問題。 事實證明,這是因為.DS_STORE文件位於-ROOT-區域服務器的文件夾中並導致連接異常。 很奇怪!
某些東西可能與您的配置有關。 首先,我下載HBase tar( http://hbase.apache.org/book/quickstart.html )來運行HBase。 我沒有按照鏈接進行任何配置,只需下載,啟動HBase,運行“HBase shell”。 但是在創建表時,它給了我一個像你提到的錯誤。 然后,我在Mac上搜索HBase安裝,因為我使用的是Mac。 我采用“brew install hbase”來安裝HBase( http://chase-seibert.github.io/blog/2013/02/01/getting-starting-with-hbase-and-pig.html )。 安裝完成后,我重新創建表。 成功。
因此,重新考慮您的錯誤,它必須與您的JAVA_HOME或HBase上的其他配置相關聯。 通過這種方式找到答案可能對您有所幫助。
在HBase 1.2.3中,我在獨立模式下得到了幾乎相同的錯誤“ZooKeeper在4次重試后存在失敗”。 它是由運行./start-hbase.sh而沒有連接到端口2181的權限引起的。解決方案結果非常簡單:
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>
通過stop-hbase.sh將hbase停止到您的zookeeper文件夾並清空文件夾的內容。 然后重啟hbase和hbase shell。 這解決了我的問題
我在設置hbase時遇到了這個問題。 幾分鍾后,我想通過運行以下命令忘記啟動hbase:
hbase-1.1.2/bin/start-hbase.sh
運行此命令后,hbase shell工作正常。
似乎hbase-site.xml
conf中存在一些錯誤。 根據快速入門文檔 ,獨立的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
下的所有文件。 並嘗試檢查日志錯誤信息。 當我有正確的conf並在hbase-env.sh
添加JAVA_HOME
變量時,我已修復此錯誤。
編輯/ etc / hosts文件...在第二行更改127.0.1.1到127.0.0.1然后啟動Hbase ...它應該可以正常工作。 如果不能正常工作......請嘗試此鏈接上的步驟http://lets-do-something-big.blogspot.in/2014/01/hbase-installation-on-ubuntu-lubuntu.html
我也有同樣的問題。在兩個文件夾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
錯誤“ ERROR zookeeper.RecoverableZooKeeper:ZooKeeper在3次重試后存在失敗 ”很可能表示您沒有運行zookeeper
- 在啟動HBase shell之前,您可以驗證Zookeeper仲裁是否已啟動,使用:
$ jps
該命令將列出機器上的所有java進程,即可能的輸出必須是 - 對於您嘗試設置的獨立HBase設置(忽略左列中的數字,即pid):
62019 Jps
61098 HMaster
61233 HRegionServer
61003 HQuorumPeer
如果您的輸出沒有HQuorumPeer
- 表示zookeeper沒有運行。
HBase集群需要Zookeeper - 因為它管理它。
方案 :
在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任何人如果經歷這些步驟仍然沒有解決問題 - 請將您的問題留在評論部分。
問題在於' 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的文件應該在場。
(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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.