環境: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