使用指定用戶和指定權限建文件夾和文件 轉載自:https://www.cnblogs.com/zyanrong/p/11995768.html
創建文件時報錯:
Caused by: org.apache.hadoop.ipc.RemoteException (org.apache.hadoop.security.AccessControlException): Permission denied: user=administrater, access=WRITE, inode="/test":root:supergroup:drwxr-xr-x
解決辦法有多種
1. 通過代碼的方式來設置當前用戶名為 root,代碼里添加如下代碼:
System.setProperty("HADOOP_USER_NAME", "root");
2. 通過-D參數來設置當前操作的用戶名;
在執行代碼的時候通過 -D 參數來指定 HADOOP_USER_NAME 為 root:java -DHADOOP_USER_NAME root TestMkDir,這樣在執行程序的時候,程序獲取到的系統中的變量 HADOOP_USER_NAME 的值就是 root,當前用戶 就設為root。
3. 設多級目錄,改變對應目錄權限
在 /folder目錄下創建 /folder1/folder2只需要把 /folder1的目錄權限設置為所有人可讀,可寫,可執行即可:chmod /folder1 777
4. 通過hdfs的命令直接改文件權限
例子:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ],
hdfs dfs -chown -R Administrator:Administrator /user/ #更改組、用戶權限
hdfs dfs -chown -R Administrator /user/wocheck #更改用戶
hdfs dfs -chgrp -R Administrator /use #更改組權限
