फिर मैं इसका समाधान नहीं पता है ...
java.io.IOException: असंगत namespaceIDs
यदि आप देखते हैं त्रुटि java.io.IOException: एक DataNode का लॉग (लॉग/Hadoop-hduser-datanode-log), संभावना में असंगत namespaceIDs आप एचडीएफएस -107 (जिसे पहले एचएडीओयूपी -1212 के नाम से जाना जाता है) द्वारा प्रभावित हैं। ... त्रुटि org.apache.hadoop.dfs.DataNode: java.io.IOException: असंगत namespaceIDs/ऐप्स/Hadoop में/tmp/DFS/डेटा: namenode
पूर्ण त्रुटि मेरी मशीनों पर इस तरह दिख रही namespaceID = 308967713; datanode namespaceID = 113030094 org.apache.hadoop.dfs.DataStorage.doTransition (DataStorage.java:281) org.apache.hadoop.dfs.DataStorage.recoverTransitionRead (DataStorage.java:121) org.apache पर। hadoop.dfs.DataNode.startDataNode (DataNode.java3030) org.apache.hadoop.dfs.DataNode पर। (DataNode.java:199) org.apache.hadoop.dfs.DataNode.makeInstance (DataNode.java) पर : 1202) org.apache.hadoop.dfs.DataNode.run (DataNode.java:1146) org.apache.hadoop.dfs.DataNode.createDataNode (DataNode.java:1167) org.apache.hadoop पर .dfs.DataNode.main (DataNode.java:1326) इस पल में, नीचे वर्णित अनुसार दो कार्यप्रणाली प्रतीत होती है।
वर्कअराउंड 1: स्क्रैच से शुरू करें मैं प्रमाणित कर सकता हूं कि निम्न चरणों में इस त्रुटि को हल किया गया है, लेकिन दुष्प्रभाव आपको खुश नहीं करेंगे (मुझे न तो)। मैंने पाया है कि क्रूड वर्कअराउंड है:
क्लस्टर को रोकें समस्याग्रस्त डेटा नोड पर डेटा निर्देशिका हटाएं: निर्देशिका को dfs.data.dir द्वारा conf/hdfs-site.xml में निर्दिष्ट किया गया है; यदि आप इस ट्यूटोरियल का पालन करते हैं, तो प्रासंगिक निर्देशिका/ऐप/हैडऑप/टीएमपी/डीएफएस/डेटा नाम नोड को सुधारें (नोट: इस प्रक्रिया के दौरान सभी एचडीएफएस डेटा खो गया है!) क्लस्टर को पुनरारंभ करें सभी एचडीएफएस डेटा को हटाने और शुरू करने पर स्क्रैच से एक अच्छा विचार नहीं लगता है (यह प्रारंभिक सेटअप/परीक्षण के दौरान ठीक हो सकता है), आप दूसरे दृष्टिकोण को आज़मा सकते हैं।
वर्कअराउंड 2: समस्याग्रस्त डेटा नोड्स के नामस्थान आईडी को अपडेट करना निम्नलिखित सुझावों के लिए जेरेड स्टाहलर का बड़ा धन्यवाद। मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन इसे आज़माने के लिए स्वतंत्र महसूस करें और मुझे अपना फ़ीडबैक भेजें।
बंद करो DataNode संपादित में/वर्तमान namespaceID का मूल्य/संस्करण वर्तमान NameNode के मान का मिलान करना DataNode पुन: प्रारंभ करें: इस तरीके के रूप में आप केवल समस्याग्रस्त DataNodes पर एक फ़ाइल को संपादित करने के लिए है "न्यूनतम इनवेसिव" है तुम मेरे ट्यूटोरियल में निर्देशों का पालन किया है, तो संबंधित फाइलों का पूरा पथ कर रहे हैं:
NameNode:/ऐप्स/Hadoop/tmp/DFS/नाम/वर्तमान/संस्करण DataNode:/ऐप्स/Hadoop/tmp/DFS/डेटा/वर्तमान/संस्करण (पृष्ठभूमि: dfs.data.dir डिफ़ॉल्ट रूप से $ {hadoop.tmp.dir}/dfs/डेटा पर सेट है, और हमने इस ट्यूटोरियल में hadoop.tmp.dir को/app/hadoop/tmp पर सेट किया है)।
समस्या के लिए समाधान स्पष्ट रूप से निम्नलिखित साइट में दी गई है:
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception-incompatible-namespaceids
आपको पता था क्या कारण था? Dfs को बदलने के दौरान मुझे यह त्रुटि मिली। * Hdfs-site.xml में पैरामीटर। क्या कोई सामान्य नियम लागू होता है? क्या यह त्रुटि रोका जा सकता है? – rretzbach
@rretzbach कोई समस्या नहीं है, अगर आप एचडीएफएस स्थापित करते हैं तो आपको इसे पहले प्रारूपित करना होगा। एक हार्डडिस्क की तरह। एक tmp विभाजन पर संस्थापित न करें क्योंकि यह प्रत्येक पुनरारंभ पर मिटा दिया जाएगा, इसलिए आपको हर बार अपने नामनोड को दोबारा सुधारना होगा। –