2013-03-22 3 views
17

मैं, चल 3 डेटा नोड्स एक नौकरी मैं हो रही है त्रुटि नीचे दिए गए निम्न चलाते समय है,लेखन केवल minReplication के बजाय 0 नोड्स (= 1)

java.io. को दोहराया जा सकता है IOException: फ़ाइल/उपयोगकर्ता/asshshar/olhcache/loaderMap9b663bd9 केवल minReplication (= 1) के बजाय 0 नोड्स में दोहराया जा सकता है। इस ऑपरेशन में 3 डेटानोड चल रहे हैं और 3 नोड्स को बाहर रखा गया है। org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget (BlockManager.java:1325) पर

यह त्रुटि मुख्य रूप से जब हमारे DataNode उदाहरणों अंतरिक्ष से बाहर भाग गए हैं या DataNodes नहीं चल रहे हैं, तो आता है। मैंने डेटा नोड्स को पुनरारंभ करने का प्रयास किया लेकिन फिर भी वही त्रुटि प्राप्त हुई।

dfsadmin- मेरे क्लस्टर नोड्स पर रिपोर्ट स्पष्ट रूप से दिखाता है कि बहुत सी जगह उपलब्ध है।

मुझे यकीन नहीं है कि यह क्यों खुश है।

+0

क्या आपके पास इस फ़ाइल पर सही फ़ाइल अनुमतियां हैं? – mohit6up

+4

सुनिश्चित करें कि 'dfs.datanode.address' पोर्ट पता खुला है। मुझे एक जैसी ही त्रुटि हुई और यह पता चला कि कई बंदरगाहों में से मुझे खोलने की जरूरत है, मैंने '50010' की उपेक्षा की। –

+0

धन्यवाद @ मार्कवा, यह भी मेरी गलती थी। इसे उत्तर के रूप में जोड़ने की देखभाल करें? –

उत्तर

14

1.Stop सभी Hadoop डेमॉन

for x in `cd /etc/init.d ; ls hadoop*` ; do sudo service $x stop ; done 

2.Remove /var/lib/hadoop-hdfs/cache/hdfs/dfs/name

Eg: [email protected]:~$ sudo rm -r /var/lib/hadoop-hdfs/cache/ 

3.Format से सभी फाइलों को Namenode

sudo -u hdfs hdfs namenode -format 

4.Start सभी Hadoop डेमॉन

for x in `cd /etc/init.d ; ls hadoop*` ; do sudo service $x start ; done 

Stop All Hadoop Service

+2

मैं एक ही समस्या में भागता हूं, क्या आप कृपया बताएं कि समस्या को हल करने के लिए मुझे ऐसा क्यों करना चाहिए और यदि डेटा खो जाएगा? – UnixAgain

1

जब ऐसा होता है क्या मैं आमतौर पर करते हैं कि मैं tmp/Hadoop-नाम/DFS/ निर्देशिका पर जाकर डेटा और नाम फ़ोल्डर (यह मानते हुए कि आप एक Linux वातावरण में चल रहे हैं) मैन्युअल रूप से हटाने के लिए है।

फिर bin/Hadoop namenode फोन करके DFS स्वरूपित -format (सुनिश्चित करें कि आप एक पूंजी वाई जब आपसे पूछा जाए कि क्या आप स्वरूपित करना चाहते हैं के साथ जवाब देने के बनाने, यदि आप से पूछा नहीं कर रहे हैं, तो फिर से रन फिर से आदेश)। jps:

फिर आप Hadoop बुला bin/start-all.sh

+0

यह ओपी के प्रश्न का एकमात्र समाधान है जो मेरे लिए काम करता है। मैं अपने लिंकबुक ओएसएक्स पहाड़ शेर 10.8 पर [लिंक] (http://blog.tundramonkey.com/2013/02/24/setting-up-hadoop-on-osx-mountain-lion) में उदाहरण का पालन करने का प्रयास कर रहा था। 5, लेकिन शुरुआत-all.sh के बाद उत्पन्न होने वाले डेटानोड को नहीं देख सका, जब तक मैंने उपरोक्त वर्णित डेटा और नाम और नामसेकंडरी फ़ोल्डर्स को हटा नहीं दिया। धन्यवाद! –

+0

केवल समाधान जो मैंने पाया है कि काम किया। धन्यवाद! –

2
  1. चेक अपने DataNode चल रहा है कि क्या द्वारा फिर से शुरू कर सकते हैं, आदेश का उपयोग करें।
  2. यदि यह नहीं चल रहा है तो कुछ समय प्रतीक्षा करें और पुनः प्रयास करें।
  3. यदि यह चला रहा है, तो मुझे लगता है कि आपको अपने डेटा नोड को फिर से प्रारूपित करना होगा।
8

मैं एक ही मुद्दा था, मैं डिस्क स्थान पर बहुत कम चल रहा था। डिस्क को मुक्त करने से इसे हल किया गया।

0

विंडोज 8 पर एक ही मुद्दे के लिए बहुत ही सरल फिक्स।1
मैंने विंडोज 8.1 ओएस और हाडोप 2.7.2 का उपयोग किया, इस मुद्दे को दूर करने के लिए निम्न चीज़ें क्या थीं।

  1. जब मैंने hdfs namenode -format शुरू किया, मैंने देखा कि मेरी निर्देशिका में एक लॉक है। कृपया नीचे दिए गए आंकड़े देखें।
    HadoopNameNode
  2. एक बार मैंने नीचे दिखाए गए पूर्ण फ़ोल्डर को हटा दिए, और फिर मैंने hdfs namenode -format किया। Folder location
    Full Folder Delete
  3. दो कदम ऊपर प्रदर्शन करने के बाद, मैं सफलतापूर्वक HDFS प्रणाली में मेरी आवश्यक फ़ाइलें रख सकता है। मैंने प्रारंभ-all.cmd यार्न और नामनोड शुरू करने के लिए कमांड का उपयोग किया।
0

मैं इस समस्या थी और मैं इसे के रूप में bellow हल:

  1. जहाँ आपके datanode और namenode मेटाडाटा/डेटा सहेजा जाता है का पता लगाएं, यदि आप इसे नहीं ढूंढ पा रहे हैं, तो बस इसे खोजने के लिए मैक पर यह आदेश करें ("tmp" नामक फ़ोल्डर में स्थित हैं)

    ढूंढें/usr/local/cellar/-name "tmp";

    खोजने आदेश इस तरह है: < "निर्देशिका"> -name < लगता है "कि निर्देशिका या फ़ाइल के लिए कोई भी स्ट्रिंग सुराग">

  2. इसे में उस फ़ाइल, सीडी खोजने के बाद। dfs को /usr/स्थानीय/सेलर // Hadoop/HDFS/tmp

    तो सीडी

    तो -LS आदेश का उपयोग कर देखते हैं कि डेटा और नाम निर्देशिका वहाँ स्थित हैं।

  3. का उपयोग करते हुए आदेश निकालने के लिए, उन दोनों को हटा दें:

    rm आर डेटा। और rm आर नाम

  4. बिन फ़ोल्डर में जाओ और सब कुछ खत्म हो अगर आप पहले से ही नहीं यह किया है:

    sbin/end-dfs.sh

  5. सर्वर या स्थानीय होस्ट से बाहर निकलें । फिर से सर्वर में

  6. प्रवेश करें: ssh < "सर्वर का नाम">

  7. DFS शुरू:

    sbin/शुरू DFS।श

  8. स्वरूप यकीन है कि होने के लिए namenode:

    bin/HDFS namenode -format

  9. आप अब HDFS उपयोग कर सकते हैं DFS में अपने डाटा अपलोड और MapReduce नौकरियों को चलाने के लिए आदेश देता है।

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