本機是linux系統,使用遠程的hadoop。程序直接訪問hdfs://node1:8020 會有權限問題。
比較簡單的解決粗暴方式是把用戶加入到supergroup組。
Hadoop本身的用戶和組的關係,是同步Linux系統中的用戶權限,但是HDFS和Linux的超級用戶組又有一點差別,HDFS中的超級用戶組是supergroup,但是Linux中默認是沒有supergoup這個組,這個時候只需要在Linux中增加supergroup這個組,然後將要在HDFS中加入到supergroup中的用戶加到這個組中,再同步HDFS用戶和組即可。
操作步驟如下:
1、在hadoop節點所在的linux裏,新建與本機用戶同名的新用戶
useradd admin
2、在Linux執行如下命令增加supergroup
groupadd supergroup
3、如將用戶admin增加到supergroup中,再執行:
usermod -a -G supergroup admin
4、使用超級管理員賬號,同步系統的權限信息到HDFS:
su - admin -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"
5、驗證
1) 將/user/hdfs目錄的權限由700,修改爲770
su - admin -s /bin/bash -c "hadoop fs -chmod 770 /datapath"
2) 通過加到supergroup組中的admin用戶去列這個目錄:
su - admin -s /bin/bash -c "hadoop fs -ls /datapath"
可成功列出目錄即表示操作成功。