HDFS開啟了許可權控制後,當您訪問HDFS時需要有合法的許可權才能正常操作HDFS,例如讀取資料和建立檔案夾等。本文為您介紹如何開啟HDFS的許可權控制。
背景資訊
Hadoop提供了以下兩種用於決定使用者身份的操作模式:
簡單模式(Simple):使用者的身份由與HDFS建立連結的用戶端作業系統決定。在類Unix系統中,等同於
whoami命令。Kerberos叢集模式:用戶端的身份由使用者自己的Kerberos認證決定。
您可以在建立EMR叢集時,開啟Kerberos叢集模式。Kerberos詳情資訊,請參見Kerberos概述。
前提條件
已建立叢集,詳情請參見建立叢集。
操作步驟
對於開啟Kerberos模式的叢集,已經預設設定了HDFS的許可權(umask為027),無需配置和重啟服務。
未開啟Kerberos模式的叢集需要按照以下方式添加配置並重啟服務。
進入叢集服務頁面。
登入EMR on ECS。
在頂部功能表列處,根據實際情況選擇地區和資源群組。
單擊目的地組群操作列的叢集服務。
在叢集服務頁面,單擊HDFS服務地區的配置。
在服務配置地區,根據實際需求修改配置項。
參數
描述
dfs.permissions.enabled
開啟許可權檢查,修改參數值為true。
預設值為false。
dfs.datanode.data.dir.perm
DataNode使用的本地檔案夾路徑的許可權。
fs.permissions.umask-mode
許可權掩碼,在建立檔案或檔案夾的時候的預設許可權值。
dfs.namenode.acls.enabled
預設值為false。ACL控制,修改參數值為true,不僅可以對使用者或使用者組進行許可權控制,還可以對其他使用者進行設定。
設定ACL相關命令有
hadoop fs -getfacl [-R] <path>和hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]。dfs.permissions.superusergroup
預設值為hadoop。超級使用者組的名稱。屬於該組的使用者都具有超級使用者的許可權。
儲存資訊。
單擊下方的儲存。
在彈出的對話方塊中,輸入執行原因,單擊儲存。
重啟服務。
在HDFS服務頁面的右上方,選擇。
在彈出的對話方塊中,輸入執行原因,單擊確定。
在確認對話中,單擊確定。
您可以單擊上方的操作歷史查看任務進度,等待任務完成。
使用樣本
使用SSH方式登入叢集,詳情請參見登入叢集。
執行以下命令,切換為已建立的emrtest使用者。
執行以下命令,使用emrtest使用者建立目錄。
執行以下命令,查看建立的目錄的許可權。
hadoop fs -ls /tmp返回如下類似資訊。
drwxr-x--x - emrtest hadoop 0 2022-10-21 14:08 /tmp/emrtest drwxr-x--x - hadoop hadoop 0 2022-10-21 10:06 /tmp/hadoop-yarn drwx-wx-wx - hive hadoop 0 2022-10-21 10:13 /tmp/hive drwxr-x--x - hadoop hadoop 0 2022-10-21 10:23 /tmp/kyuubi-staging drwxrwxrwt - hadoop hadoop 0 2022-10-21 10:23 /tmp/logs執行以下命令,給目錄設定ACL許可權並授權給foo使用者rwx許可權。
執行以下命令,查看目錄許可權。
hadoop fs -ls /tmp/返回如下類似資訊。
drwxrwx--x+ - emrtest hadoop 0 2022-10-21 14:08 /tmp/emrtest drwxr-x--x - hadoop hadoop 0 2022-10-21 10:06 /tmp/hadoop-yarn drwx-wx-wx - hive hadoop 0 2022-10-21 10:13 /tmp/hive drwxr-x--x - hadoop hadoop 0 2022-10-21 10:23 /tmp/kyuubi-staging drwxrwxrwt - hadoop hadoop 0 2022-10-21 10:23 /tmp/logs說明許可權後面帶了+號的表示設定了ACL許可權,例如drwxrwx--x+。
執行以下命令,查看ACL許可權。
hadoop fs -getfacl /tmp/emrtest返回如下類似資訊。
# file: /tmp/emrtest # owner: emrtest # group: hadoop user::rwx user:foo:rwx group::r-x mask::rwx other::--x
su emrtesthadoop fs -mkdir /tmp/emrtesthadoop fs -setfacl -m user:foo:rwx /tmp/emrtest