2011-05-27 16 views
10

मैं पूरी तरह से पागल हो रहा हूं:Hbase क्लाइंट कनेक्शन कनेक्शन/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 खोल

काम करने और 'सूची' चल रहा है और सही परिणाम के साथ आ रहा है;

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 

जब माणिक & बचत के माध्यम से जोड़ने, सब कुछ ठीक काम कर रहा है; हम डेटा जोड़ रहे हैं, यह सिस्टम में हो रहा है, हम इसे क्वेरी/स्कैन कर सकते हैं। सबकुछ ठीक लगता है।

हालांकि

, जब जावा के साथ जोड़ने:

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 पर बचत ही करता है)।

क्या कोई मेरी मदद कर सकता है?

उत्तर

8

चार्ल्स,

यह एक Zookeeper (ZK) त्रुटि है। एचबीएएस क्लाइंट ज़ूकीपर से/hbase नोड प्राप्त करने की कोशिश करता है और विफल रहता है।

आप एचबीएस मास्टर वेब इंटरफेस से जेडके डंप प्राप्त कर सकते हैं। आपको जेडके के सभी कनेक्शन देखना चाहिए और पता लगाना चाहिए कि कुछ थका रहा है या नहीं।

किसी और चीज में गोता लगाने से पहले आप अपने जेडके क्लस्टर को पुनरारंभ करने का प्रयास कर सकते हैं और देख सकते हैं कि यह आपकी समस्या को हल करता है या नहीं। (यह अजीब बात है कि आप एक ग्राहक के साथ देखते हैं)।

एचबीएएस के पास जेडके से कनेक्शन की संख्या बढ़ाने की सेटिंग है। यह

hbase.zookeeper.property.maxClientCnxns 

कुछ अद्यतन (नीचे देखें) हाल ही में कनेक्शन की डिफ़ॉल्ट संख्या (वहाँ एक HBase-default.xml फ़ाइल सभी डिफ़ॉल्ट विन्यास है) से संबंधित थे है। आप इसे अपने hbase-site.xml फ़ाइल (HBase conf dir के तहत) में ओवरराइड कर सकते हैं और इसे 100 या उससे अधिक तक बढ़ा सकते हैं। लेकिन सुनिश्चित करें कि आप इस तरह की वास्तविक समस्या का मुखौटा नहीं कर रहे हैं, आपको इस समस्या को एक क्लाइंट के साथ नहीं देखना चाहिए।

हमारे पास एक समान स्थिति है, लेकिन यह एचबीएस-0.90 में अपग्रेड करने के बाद, मानचित्र से कम नौकरियों से भारी संचालन के दौरान हो रहा था।

आप अभी भी इसे समझ नहीं कर सकते, तो बाहर HBase उपयोगकर्ताओं की सूची पर एक ईमेल भेजें:

यहाँ अपने समस्या से संबंधित मुद्दे के एक जोड़े हैं या freenode पर # हबेस चैनल में शामिल हों और लाइव प्रश्न पूछें।

3

समस्या वास्तव में था कि (किसी कारण से ... मैं वास्तव में यह विस्तार से मिलता है) फ़ायरवॉल Zookeeper से बात करने के लिए आवश्यक बंदरगाहों में से एक को अवरुद्ध किया गया था; कमांड लाइन से यह काम करता है, मेरे ऐप से यह नहीं था। हालांकि जब मैंने फ़ायरवॉल को अक्षम कर दिया तो सभी ने अचानक ठीक काम किया।

आपकी मदद के लिए धन्यवाद!

+4

से कनेक्ट करने के लिए आप जो बंदरगाहों जोड़ सकता है की कोशिश कर रहा है, जबकि खुले होने की आवश्यकता होती है zookeper करता है? धन्यवाद! – Gevorg

+1

क्या टीसीपी 2181 के अलावा कुछ और चाहिए? – Gevorg

1

मैं अपने HBase db से कनेक्ट करने के लिए एक ही मुद्दा था।

बाहर कर देता है मैं अपने /etc/hosts में डाटाबेस मशीन के एक बुरा पता था।

2

ऐसा तब होता है जब उपयोगकर्ता के पास "zookeeper.znode.parent" के लिए परिभाषित गलत मान होता है, जो क्लाइंट पक्ष पर sbced hbase-site.xml में लिखा जाता है या कस्टम एपीआई लिखित में, "zookeeper.znode.parent" गलत स्थान पर गलत तरीके से अपडेट किया गया था। उदाहरण के लिए डिफ़ॉल्ट "zookeeper.znode.parent" को "/ hbase-unsecure" पर सेट किया गया है, लेकिन यदि आप गलत तरीके से निर्दिष्ट करते हैं कि क्लस्टर में हमने जो सेट अप किया है उसके विपरीत "/ hbase" कहें, तो हम इसका सामना करेंगे अपवाद HBase क्लस्टर

संबंधित मुद्दे