2013-02-05 17 views
8

का उपयोग कर एचडीएफएस में डेटा स्थानांतरित करना मुझे नहीं पता कि यहां क्या हो रहा है लेकिन मैं अपने स्थानीय फाइल सिस्टम में निर्देशिका से एक साधारण फ़ाइल को एचडीएफएस के लिए निर्दिष्ट निर्देशिका में कॉपी करने की कोशिश कर रहा हूं।कॉपीफ्रोमोकल स्विच

मेरे में HDFS-site.xml मैं निर्दिष्ट किया है कि HDFS के लिए निर्देशिका/घर/वैभव/Hadoop/dataNodeHadoopData निम्नलिखित गुण का उपयोग करेंगे -

<name>dfs.data.dir</name> 
<value>/home/vaibhav/Hadoop/dataNodeHadoopData/</value> 

and 

<name>dfs.name.dir</name> 
<value>/home/vaibhav/Hadoop/dataNodeHadoopData/</value> 

मैं निम्न आदेश का उपयोग कर रहा -

bin/hadoop dfs -copyFromLocal /home/vaibhav/ml-100k/u.data /home/vaibhav/Hadoop/dataNodeHadoopData 

फ़ाइल u.data को स्थानीय फाइल सिस्टम स्थान से उस निर्देशिका में कॉपी करने के लिए जिसे मैंने एचडीएफएस निर्देशिका के रूप में निर्दिष्ट किया है। लेकिन जब मैं ऐसा करता हूं, कुछ भी नहीं होता - कोई त्रुटि नहीं, कुछ भी नहीं। और एचडीएसएफ में कोई फ़ाइल कॉपी नहीं की जाती है। क्या मुझसे कुछ गलत हो रही है? कोई अनुमति मुद्दा हो सकता है?

सुझावों की आवश्यकता है।

मैं छद्म वितरित एकल नोड मोड का उपयोग कर रहा हूं।

इसके अलावा, एक संबंधित नोट पर, मैं पूछना चाहता हूं कि मेरे मानचित्र में कार्यक्रम को कम करने के लिए मैंने इनपुटफाइल को /home/vaibhav/ml-100k/u.data के रूप में इनपुट करने के लिए कॉन्फ़िगरेशन सेट किया है। तो क्या यह स्वचालित रूप से दिए गए स्थान से फ़ाइल को hdfs में कॉपी नहीं करेगा?

+1

क्या मैं स्थानीय फ़ाइल ssytem से डेटा को एचडीएफएस में स्थानांतरित करने में लगने वाला समय माप सकता हूं? – Tariq

उत्तर

13

मुझे विश्वास है कि dfs.data.dir और dfs.name.dir को दो अलग और मौजूदा निर्देशिकाओं को इंगित करना है। इसके अलावा सुनिश्चित करें कि आपने कॉन्फ़िगरेशन में निर्देशिकाओं को बदलने के बाद नामनोड एफएस स्वरूपित किया है।

एचडीएफएस की प्रतिलिपि करते समय आप गलत तरीके से लक्ष्य निर्दिष्ट कर रहे हैं। HDFS करने के लिए एक स्थानीय फाइल कॉपी करने के लिए सही सिंटैक्स है:

bin/hadoop dfs -copyFromLocal <local_FS_filename> <target_on_HDFS> 

उदाहरण:

bin/hadoop dfs -copyFromLocal /home/vaibhav/ml-100k/u.data my.data 

यह HDFS में अपना उपयोगकर्ता के घर निर्देशिका में एक फ़ाइल my.data पैदा करेगा। एचडीएफएस में फ़ाइलों की प्रतिलिपि बनाने से पहले सुनिश्चित करें कि, आप निर्देशिका निर्देशिका सामग्री और निर्देशिका निर्माण को पहले सूचीबद्ध करते हैं।

+0

कूल। मैं इसे करने की कोशिश की। मैंने कॉन्फ़िगरेशन को दो अलग-अलग डीआईआर स्थानों पर इंगित करने के लिए बदल दिया, नामनोड को स्वरूपित किया, सभी डिमन्स शुरू किए और आपने सुझाए गए कॉपी फ्रॉमोकल को आजमाया। अब यह कहता है - org.apache.hadoop.Security.AccessControlException: अनुमति अस्वीकार: उपयोगकर्ता = रूट, एक्सेस = लिखना, इनोड = "": वैभव: सुपरग्रुप: rwxr-xr-x –

+0

इसलिए मैंने chmod 777 -R को hdfs निर्देशिका में दिया (/ घर/वैभव/Hadoop/dataNodeHadoopData /)। लेकिन अब कुछ और त्रुटि है - यह कहती है कि फ़ाइल /user/vaibhav/u.data को केवल 1 नोड्स के बजाय दो नोड्स में दोहराया जा सकता है। मुझे नहीं पता कि यह इस फ़ोल्डर में लिखने का प्रयास क्यों कर रहा है! –

+0

प्रति डिफ़ॉल्ट फ़ाइलों को एचडीएफएस पर उपयोगकर्ता की होम निर्देशिका में कॉपी किया गया है। आपके मामले में '/ उपयोगकर्ता/वैभव '। प्रतिकृति त्रुटि के लिए, [यह] देखें (http://stackoverflow.com/questions/5293446/hdfs-error-could-only-be-replicated-to-0-nodes-instead-of-1) और [रनटाइम त्रुटियों का हिस्सा] (http://wiki.apache.org/hadoop/HowToSetupYourDevelopmentEnvironment) यदि हडूप विकी। सबसे अधिक संभावना हैडूप डीएफएस डिमन्स सही ढंग से शुरू नहीं हुआ था। – harpun

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