全部產品
Search
文件中心

E-MapReduce:開啟許可權認證

更新時間:Jan 21, 2025

HDFS開啟了許可權控制後,當您訪問HDFS時需要有合法的許可權才能正常操作HDFS,例如讀取資料和建立檔案夾等。本文為您介紹如何開啟HDFS的許可權控制。

背景資訊

Hadoop提供了以下兩種用於決定使用者身份的操作模式:

  • 簡單模式(Simple):使用者的身份由與HDFS建立連結的用戶端作業系統決定。在類Unix系統中,等同於whoami命令。

  • Kerberos叢集模式:用戶端的身份由使用者自己的Kerberos認證決定。

    您可以在建立EMR叢集時,開啟Kerberos叢集模式。Kerberos詳情資訊,請參見Kerberos概述

前提條件

已建立叢集,詳情請參見建立叢集

操作步驟

說明
  • 對於開啟Kerberos模式的叢集,已經預設設定了HDFS的許可權(umask為027),無需配置和重啟服務。

  • 未開啟Kerberos模式的叢集需要按照以下方式添加配置並重啟服務。

  1. 進入叢集服務頁面。

    1. 登入EMR on ECS

    2. 在頂部功能表列處,根據實際情況選擇地區和資源群組

    3. 單擊目的地組群操作列的叢集服務

  2. 叢集服務頁面,單擊HDFS服務地區的配置

  3. 服務配置地區,根據實際需求修改配置項。

    參數

    描述

    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。超級使用者組的名稱。屬於該組的使用者都具有超級使用者的許可權。

  4. 儲存資訊。

    1. 單擊下方的儲存

    2. 在彈出的對話方塊中,輸入執行原因,單擊儲存

  5. 重啟服務。

    1. 在HDFS服務頁面的右上方,選擇更多操作 > 重啟

    2. 在彈出的對話方塊中,輸入執行原因,單擊確定

    3. 確認對話中,單擊確定

      您可以單擊上方的操作歷史查看任務進度,等待任務完成。

使用樣本

  1. 使用SSH方式登入叢集,詳情請參見登入叢集

  2. 執行以下命令,切換為已建立的emrtest使用者。

  3. su emrtest
  4. 執行以下命令,使用emrtest使用者建立目錄。

  5. hadoop fs -mkdir /tmp/emrtest
  6. 執行以下命令,查看建立的目錄的許可權。

    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                                 
  7. 執行以下命令,給目錄設定ACL許可權並授權給foo使用者rwx許可權。

  8. hadoop fs -setfacl -m user:foo:rwx /tmp/emrtest
  9. 執行以下命令,查看目錄許可權。

    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+。

  10. 執行以下命令,查看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