eclipse 向HDFS中創建文件夾報錯 permission denied


環境:win7  eclipse    hadoop 1.1.2

當執行創建文件的的時候,

即:

String Path = "hdfs://host2:9000";

FileSystem fileSystem = FileSystem.get(new URI(Path),new Configuration());

String DIR_PATH = "hdfs://host2:9000/user/hadoop/ok";

fileSystem.mkdirs(new Path(DIR_PATH));//想hadoop上創建一個文件報錯

報錯:

 org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 

 

原因:

1. 當前用戶是Administrator ,不是hadoop用戶

2. hadoop的默認的hdfs的文件目錄是有權限的,要創建位置是目錄是用文件權限的

    說明 :

           上面的String  IR_PATH_1 = "hdfs://host2:9000/user/hadoop/ok"; String   IR_PATH_2 = "/ok"; 

             這個這兩個是有區別的,前面的 IR_PATH_1  是要在默認的目錄(hdfs://host2:9000)下的/user/hadoop下進行創建文件夾,

     而他的文件為:drwxr-xr-x   - hadoop supergroup          0 2016-07-18 09:04 /user/hadoo    是用戶用戶hadoop 用戶組supergroup 的文件夾

            后面的一個IR_PATH_2 在根目錄(hdfs://host2:9000)下進創建進行創建

 

 

解決辦法:

1. 為了使Eclipse能正常對Hadoop集群的HDFS上的文件能進行修改和刪除,所以修改你工作時所用的Win7系統管理員名字,默認一般為"Administrator",把它修改為"hadoop",此用戶名與Hadoop集群普通用戶一致,大家應該記得我們Hadoop集群中所有的機器都有一個普通用戶——hadoop,而且Hadoop運行也是用這個用戶進行的。為了不至於為權限苦惱,我們可以修改Win7上系統管理員的姓名,這樣就避免出現該用戶在Hadoop集群上沒有權限等都疼問題,會導致在Eclipse中對Hadoop集群的HDFS創建和刪除文件受影響。

(1)選擇"本地用戶和組",展開"用戶",找到系統管理員"Administrator",修改其為"hadoop",
(2)把電腦進行"注銷"或者"重啟電腦",這樣才能使管理員才能用這個名字。

 

2.修改hadoop的配置

在conf/hdfs-site.xml中加入

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

3.修改權限:(windows用戶Administrator對hadoop目錄並沒有寫入權限)

放開 hadoop 目錄的權限 , 命令如下 :$ hadoop fs -chmod 777 /user/hadoop.

 這樣是可以進行寫入了,但是,這樣創建的文件夾信息為:用戶為 Administrator

drwxr-xr-x   - Administrator supergroup          0 2016-07-18 09:12 /user/hadoop/ok

是Administrator用戶的,不是下面的一個文件夾類型一樣

drwxr-xr-x - hadoop supergroup 0 2016-07-18 09:20 /user/hadoop/.Trash

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM