2012-06-13 26 views
7

मैं कर रहा हूँ एक सा (HBase 0.92.1-cdh4.0.0 पर, Hadoop 2.0.0-cdh4.0.0) एक दोषपूर्ण तालिका मरम्मत अटकमरम्मत HBase तालिका (संक्रमण में असाइन नहीं किए गए क्षेत्र)

वहाँ एक क्षेत्र है संक्रमण में खत्म नहीं होता है कि:

Number of empty REGIONINFO_QUALIFIER rows in .META.: 0 
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed => } not deployed on any region server. 
Trying to fix unassigned region... 
12/06/12 11:44:40 INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063.', STARTKEY => '1329773878.35_766a0b4df75e4381a686fbc07db9e333', ENDKEY => '1329793347.58_163865765c0a11e184ab003048f0e77e', ENCODED => bf2025f4bc154914b5942af4e72ea063,} 

और यह सिर्फ लूप:

Region State 
bf2025f4bc154914b5942af4e72ea063 counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063. state=OFFLINE, ts=Tue Jun 12 11:43:53 CEST 2012 (0s ago), server=null 

जब मैं sudo -u hbase hbase hbck -repair चलाने के लिए, मैं इस मिलता है।

मैं -repair ऐसा नहीं करते हैं, मैं इस मिल:

Number of empty REGIONINFO_QUALIFIER rows in .META.: 0 
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed => } not deployed on any region server. 
ERROR: Region { meta => counter_traces,1329816776.95_95b5561f3c1e496598421359a19ac665,1339425297099.ee1fd808d954c9adc9ed95ec2f29d119., hdfs => hdfs://hbase001:8020/hbase/counter_traces/ee1fd808d954c9adc9ed95ec2f29d119, deployed => } not deployed on any region server. 
12/06/12 11:45:59 DEBUG util.HBaseFsck: There are 134 region info entries 
ERROR: There is a hole in the region chain between 1329773878.35_766a0b4df75e4381a686fbc07db9e333 and 1329793347.58_163865765c0a11e184ab003048f0e77e. You need to create a new .regioninfo and region dir in hdfs to plug the hole. 
ERROR: There is a hole in the region chain between 1329816776.95_95b5561f3c1e496598421359a19ac665 and 1329847231.75_b3c50776778b43e088dd7ed865e11331. You need to create a new .regioninfo and region dir in hdfs to plug the hole. 
ERROR: Found inconsistency in table counter_traces 

मैं -repair एक दो बार पहले ही आ जाते है, और यह मदद की। लेकिन इस बार, अब और नहीं।

ठीक है, इसलिए यह ठीक करने के लिए मैन्युअल हस्तक्षेप करने के लिए कहता है। क्या कोई मुझे सही दिशा में इंगित कर सकता है कि यह कैसे करें? एक नुस्खा, वेबपृष्ठ, उदाहरण, कुछ भी मदद करेगा।

धन्यवाद, मारियो

उत्तर

12

मारियो,

तो कारण एक क्षेत्र संक्रमण में अटक जाती है में से एक है, क्योंकि जब यह regionservers भर में ले जाया जा रहा है, यह स्रोत regionserver से निरस्त किया गया है, लेकिन है कभी किसी अन्य क्षेत्ररक्षक को सौंपा नहीं। एक ठीक है कि हमेशा मेरे लिए काम करता जबरन द्वारा HBase खोल से यह बताए द्वारा है: -

assign regionName 
+0

मुझे सही दिशा में मिला। प्रत्यक्ष assing काम नहीं किया, लेकिन कम से कम मुझे कुछ कोड मिला जो मुझे क्षेत्र श्रृंखला में छेद भरने में मदद की। – Mario

+0

क्या आप कोड साझा कर सकते हैं? मेरे पास एक समान समस्या है और इसे ठीक करना चाहते हैं। –

+0

मुझे खेद है, तो वापस पोस्ट किया जाना चाहिए था। मुझे नहीं लगता कि मेरे पास अब और है। – Mario

0

अपने HBase संस्करण सबसे नया आप भी बजाय -repairHoles सिर्फ -Repair hbck की कोशिश कर सकते है। हाल ही में "छेद को ठीक करें" समस्या पर मेरे लिए यह चाल है।

1

सबसे पहले आपको यह जांचना चाहिए कि आपके एचडीएफएस में उस विशेष क्षेत्र के लिए कोई फ़ाइल है या नहीं।

यदि वहां है, तो आपको तय होने तक अकेले hbck -fixHdfsHoles -fixMeta के साथ चिपकना चाहिए। (कुछ कोशिश कर सकते हैं)।

यदि संक्रमण में क्षेत्र के लिए ऐसी कोई फ़ाइल नहीं है (यह/hbase/data /// होना चाहिए), तो एचबीएएस सोचता है कि उस निर्देशिका में उस क्षेत्र के लिए एक वैध एचएफआईएल होना चाहिए और सक्षम नहीं होगा इसे सामान्य मरम्मत आदेशों के साथ ठीक करने के लिए।

आप क्या नवीनतम प्रतिक्रिया यहाँ से एक में है और अपने HDFS में के लिए एक वैध HFile बनाना चाहिए:

http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/31308

0

मैं क्षेत्रों के सशक्त काम करने की कोशिश की, लेकिन यह काम नहीं किया मेरे लिए।मैं निम्नलिखित की कोशिश की और यह काम किया:

कदम:

    HBase खोल से
  • अक्षम तालिका
  • भागो hbck निम्न आदेश

    sudo -u hbase hbase hbck -repair

  • HBase से तालिका सक्षम का उपयोग कर problmes ठीक करने के लिए खोल

0

मेरे मामले में, मैं उस क्षेत्र डेटा के मालिक को बदलना भूल जाता हूं जिसे किसी अन्य क्लस्टर से कॉपी किया गया था।

तब मैं hbase hbck -repair है, लेकिन INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned तो त्रुटि दिखाई Unable to complete check or repair the region, failed to move out of transition within timeout 120000ms

मैं hbase:meta लगता है पहले से ही क्षेत्र की जानकारी है प्राप्त करने की कोशिश।

जबकि तालिका स्कैन, तो आपको त्रुटि इस

ERROR: No server address listed in hbase:meta for region X 

की तरह फिर hbase hbck -fixAssignments कोशिश मिल जाएगा, लेकिन अभी भी पहले की तरह विफल रहा है।

तो मैं मेज क्षेत्र डेटा की जांच करते हैं और पाते ही इस तालिका के स्वयं के और समूह

drwxr-xr-x - hdfs hbase 

लेकिन इस

drwxr-xr-x - hbase hbase

तो समस्या की तरह अन्य कर रहे हैं परिवर्तन खुद और के रूप में समूह के बाद हल किया गया था अन्य शामिल हैं। अब आप तालिका को सफलतापूर्वक स्कैन करेंगे।