2012-07-21 11 views
32

पर अनुमति अस्वीकार की गई है, मैं हैडोप वितरित फ़ाइल सिस्टम के लिए नया हूं, मैंने अपनी मशीन पर हैडोप एकल नोड की पूरी स्थापना की है। लेकिन उसके बाद जब मैं hdfs पर डेटा अपलोड करने जा रहा हूं तो यह एक त्रुटि संदेश Permission Denied देता है। कमांड के साथ टर्मिनल सेएचडीएफएस

संदेश:

[email protected]:/usr/local/hadoop$ sudo bin/hadoop fs -put /usr/local/input-data/ /inwe 
put: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x 

[email protected]:/usr/local/hadoop$ 
+1

का उपयोग कर आप निर्देशिका के लिए पहुँच अधिकार है इस समस्या का समाधान है? –

+0

हां, सुडो का उपयोग करने के बाद ,,, hduser @ ubuntu:/usr/local/hadoop $ sudo bin/hadoop fs -put/usr/local/input-data// inwe put: org.apache.hadoop.security। AccessControlException: अनुमति अस्वीकृत: उपयोगकर्ता = रूट, एक्सेस = WRITE, inode = "": hduser: supergroup: rwxr-xr-x hduser @ ubuntu:/usr/local/hadoop $ –

+0

मेरे मामले में, ऐसा इसलिए था क्योंकि मैं कोशिश कर रहा था मेरे फाइल सिस्टम में किसी स्थान पर फ़ाइलों को डाउनलोड करने के लिए जहां मुझे अनुमति नहीं थी। – optimist

उत्तर

51

मैं संपत्ति कोड के नीचे जोड़ने permission.By डीएफएस को अक्षम करके इस समस्या को अस्थायी हल conf के लिए/HDFS-site.xml

<property> 
    <name>dfs.permissions</name> 
    <value>false</value> 
</property> 
+2

यह एक नई क्लस्टर में सेट की गई पहली चीज़ है ;-) –

+0

'conf' फ़ोल्डर कहां है? –

+1

conf फ़ोल्डर namenode की कॉन्फ़िगरेशन है। मेरे मामले में होमब्री स्थापित हैडऑप का उपयोग करते हुए हालांकि यह /usr/local/Cellar/hadoop/2.7.3/libexec/etc/hadoop/hdfs-site.xml –

14

आप दो अलग-अलग यहां समस्याओं का सामना कर रहे हैं:


[email protected]:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input put: /usr/local/input-data (Permission denied) 

[email protected]:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input 
put: /usr/local/input-data (Permission denied) 

[email protected]:/usr/local/hadoop$ 

sudo का उपयोग करने और sudouser को hduser जोड़ने के बाद

यहां, उपयोगकर्ता hduser स्थानीय निर्देशिका /usr/local/input-data तक पहुंच नहीं है। यही है, आपकी स्थानीय अनुमतियां बहुत ही सीमित हैं। आपको इसे बदलना चाहिए।


[email protected]:/usr/local/hadoop$ sudo bin/hadoop fs -put /usr/local/input-data/ /inwe put: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x 

यहाँ, root उपयोगकर्ता (जब से तुम sudo का उपयोग कर रहे हैं) HDFS निर्देशिका /input के लिए उपयोग नहीं है। जैसा कि आप देख सकते हैं: hduser:supergroup:rwxr-xr-x कहता है कि केवल hduser में लेखन पहुंच है। Hadoop वास्तव में एक विशेष उपयोगकर्ता के रूप में root का सम्मान नहीं करता है।


इसे ठीक करने के, मैं सुझाव है कि आप स्थानीय डेटा पर अनुमतियों को बदलने के लिए:

sudo chmod -R og+rx /usr/local/input-data/ 

फिर, put आदेश को फिर से hduser के रूप में की कोशिश करो।

+0

copyFromLocal: org.apache.hadoop.security.AccessControlException: अनुमति अस्वीकृत: उपयोगकर्ता = रूट, एक्सेस = WRITE, inode = "": hduser: supergroup: rwxr-xr-x त्रुटि उपरोक्त अनुमति को बदलने के बाद। –

+2

'put'' sudo' के रूप में मत करो। इसे 'hduser' के रूप में करें। –

42

मैं ऐसी ही स्थिति थी और यहां जो कुछ अलग है मेरा दृष्टिकोण है:

HADOOP_USER_NAME=hdfs hdfs dfs -put /root/MyHadoop/file1.txt/

आप वास्तव में क्या आप अपने स्थानीय अनुमतियों के अनुसार स्थानीय फ़ाइल को पढ़ने, लेकिन जब HDFS पर फ़ाइल रखकर आप उपयोगकर्ता hdfs तरह प्रमाणीकृत हैं है। आप इसे अन्य आईडी के साथ कर सकते हैं (असली ऑथ स्कीम कॉन्फ़िगरेशन से सावधान रहें लेकिन यह आमतौर पर एक मामला नहीं है)।

लाभ:

  1. अनुमतियां HDFS पर रखा जाता है।
  2. आपको sudo की आवश्यकता नहीं है।
  3. आपको वास्तव में उचित स्थानीय उपयोगकर्ता 'hdfs' की आवश्यकता नहीं है।
  4. आपको पिछले अंक की वजह से कुछ भी कॉपी करने या अनुमतियों को बदलने की आवश्यकता नहीं है।
4

hduser (जड़ से) के रूप में एक खोल प्रारंभ करें और अपने आदेश चला

sudo -u hduser bash 
hadoop fs -put /usr/local/input-data/ /input 

[अद्यतन] भी ध्यान रखें कि hdfs उपयोगकर्ता सुपर उपयोगकर्ता है और सभी आर/डब्ल्यू विशेषाधिकार हैं। आप sudo का उपयोग कर रहे हैं -

+0

में एक खोल शुरू करने की आवश्यकता नहीं है। 'sudo -u hdfs hadoop fs -chmod 777/hbase' भी काम करता है। – 030

+0

अच्छा बिंदु, मुझे लगता है कि आप एकाधिक कमांड को hduser के रूप में चलाने के लिए चाहते हैं। –

3

मैं निम्नलिखित चरणों का

su hdfs 
hadoop fs -put /usr/local/input-data/ /input 
exit 
संबंधित मुद्दे