TOP

Hadoop(二)---Hadoop集群的安全設置
2018-12-02 08:42:58 】 瀏覽:652
Tags:

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/Wee_Mita/article/details/53945665

1.介紹

本文檔描述如何在安全模式下配置Hadoop的身份驗證。當Hadoop配置為以安全模式運行時,每個Hadoop服務和每個用戶必須通過Kerberos進行身份驗證。

必須正確配置所有服務主機的正向和反向主機查找,以允許服務彼此進行身份驗證。可以使用DNS或/ etc / hosts文件配置主機查找。

Hadoop的安全特性包括認證服務級別授權Web控制臺認證數據機密性

2.認證

2.1最終用戶帳戶

當啟用服務級別身份驗證時,最終用戶必須在與Hadoop服務交互之前進行身份驗證。最簡單的方法是讓用戶使用Kerberos kinit命令進行交互式身份驗證。當使用kinit的交互式登錄不可行時,可以使用使用Kerberos keytab文件的程序化身份驗證。

2.2Hadoop守護程序的用戶帳戶

確保HDFS和YARN后臺駐留程序作為不同的Unix用戶運行,例如hdfs和yarn。此外,請確保MapReduce JobHistory服務器以不同的用戶身份運行,例如mapred。

建議他們共享一個Unix群組,例如hadoop。另請參閱“從用戶映射到組”以進行組管理。

User:Group Daemons
hdfs:hadoop NameNode, Secondary NameNode, JournalNode, DataNode
yarn:hadoop ResourceManager, NodeManager
mapred:hadoop MapReduce JobHistory Server

2.3Hadoop守護程序的Kerberos主體

每個Hadoop服務實例必須配置其Kerberos主體和keytab文件位置。

服務主體的一般格式為ServiceName/_HOST@REALM.TLD。例如dn/_HOST@EXAMPLE.COM。

Hadoop通過允許將服務主體的主機名組件指定為_HOST通配符,簡化了配置文件的部署。每個服務實例將在運行時用_HOST替換其自己的完全限定主機名。這允許管理員在所有節點上部署同一組配置文件。但是,keytab文件將不同。

HDFS

每個NameNode主機上的NameNode keytab文件應如下所示:

$ klist -e -k -t /etc/security/keytab/nn.service.keytab
Keytab name: FILE:/etc/security/keytab/nn.service.keytab
KVNO Timestamp         Principal
   4 07/18/11 21:08:09 nn/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 nn/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 nn/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)

該主機上的Secondary NameNode keytab文件應如下所示:

$ klist -e -k -t /etc/security/keytab/sn.service.keytab
Keytab name: FILE:/etc/security/keytab/sn.service.keytab
KVNO Timestamp         Principal
   4 07/18/11 21:08:09 sn/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 sn/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 sn/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)

每個主機上的DataNode keytab文件應如下所示:

$ klist -e -k -t /etc/security/keytab/dn.service.keytab
Keytab name: FILE:/etc/security/keytab/dn.service.keytab
KVNO Timestamp         Principal
   4 07/18/11 21:08:09 dn/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 dn/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 dn/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)

YARN

ResourceManager主機上的ResourceManager keytab文件應如下所示:

$ klist -e -k -t /etc/security/keytab/rm.service.keytab
Keytab name: FILE:/etc/security/keytab/rm.service.keytab
KVNO Timestamp         Principal
   4 07/18/11 21:08:09 rm/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 rm/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 rm/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)

每個主機上的NodeManager keytab文件應如下所示:

$ klist -e -k -t /etc/security/keytab/nm.service.keytab
Keytab name: FILE:/etc/security/keytab/nm.service.keytab
KVNO Timestamp         Principal
   4 07/18/11 21:08:09 nm/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 nm/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 nm/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)

MapReduce JobHistory Server

該主機上的MapReduce JobHistory Server keytab文件應如下所示:

$ klist -e -k -t /etc/security/keytab/jhs.service.keytab
Keytab name: FILE:/etc/security/keytab/jhs.service.keytab
KVNO Timestamp         Principal
   4 07/18/11 21:08:09 jhs/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 jhs/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 jhs/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-256 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (AES-128 CTS mode with 96-bit SHA-1 HMAC)
   4 07/18/11 21:08:09 host/full.qualified.domain.name@REALM.TLD (ArcFour with HMAC/md5)

3.從Kerberos主體映射到OS用戶帳戶

Hadoop使用hadoop.security.auth_to_local指定的規則將Kerberos主體映射到操作系統用戶(系統)帳戶。這些規則的工作方式與Kerberos配置文件(krb5.conf)中的auth_to_local相同。此外,Hadoop auth_to_local映射支持/ L標志,用于小寫返回的名稱。

如果領域與default_realm(通常在/etc/krb5.conf中定義)匹配,則默認選擇主體名稱的第一個組件作為系統用戶名。例如默認規則將主機host/full.qualified.domain.name@REALM.TLD映射到系統用戶主機。默認規則將不適用于大多數集群。

在典型的集群中,HDFS和YARN服務將分別作為系統hdfs和yarn用戶啟動。

hadoop.security.auth_to_local可以配置如下:

<property>
  <name>hadoop.security.auth_to_local</name>
  <value>
    RULE:[2:$1@$0](nn/.*@.*REALM.TLD)s/.*/hdfs/
    RULE:[2:$1@$0](jn/.*@.*REALM.TLD)s/.*/hdfs/
    RULE:[2:$1@$0](dn/.*@.*REALM.TLD)s/.*/hdfs/
    RULE:[2:$1@$0](nm/.*@.*REALM.TLD)s/.*/yarn/
    RULE:[2:$1@$0](rm/.*@.*REALM.TLD)s/.*/yarn/
    RULE:[2:$1@$0](jhs/.*@.*REALM.TLD)s/.*/mapred/
    DEFAULT
  </value>
</property>

可以使用hadoop kerbname命令測試自定義規則。此命令允許指定主體并應用Hadoop的當前auth_to_local規則集。

4.從用戶映射到組

系統用戶到系統組映射機制可以通過hadoop.security.group.mapping配置。有關詳細信息,請參閱HDFS權限指南。

實際上,您需要在安全模式下使用Kerberos和LDAP為Hadoop管理SSO環境。

5.代理用戶

一些產品,如Apache Oozie,代表最終用戶訪問Hadoop的服務需要能夠模仿最終用戶。有關詳細信息,請參閱代理用戶的文檔。

6.安全DataNode

因為DataNode數據傳輸協議不使用Hadoop RPC框架,DataNode必須使用由dfs.datanode.addressdfs.datanode.http.address指定的特權端口進行身份驗證。此身份驗證基于以下假設:攻擊者將無法在DataNode主機上獲得root權限。

以root用戶身份執行hdfs datanode命令時,服務器進程首先綁定特權端口,然后刪除特權并以HADOOP_SECURE_DN_USER指定的用戶帳戶運行。此啟動過程使用安裝到JSVC_HOME的。您必須在啟動時(在hadoop-env.sh中)指定HADOOP_SECURE_DN_USERJSVC_HOME作為環境變量。

從版本2.6.0起,SASL可用于驗證數據傳輸協議。在此配置中,安全集群不再需要使用jsvc以root身份啟動DataNode并綁定到特權端口。要啟用SASL數據傳輸協議,請在hdfs-site.xml中設置dfs.data.transfer.protection,為dfs.datanode.address設置非特權端口,將dfs.http.policy設置為HTTPS_ONLY,并確保HADOOP_SECURE_DN_USER環境變量未定義。 請注意,如果dfs.datanode.address設置為特權端口,則不能在數據傳輸協議上使用SASL。 出于向后兼容性的原因,這是必需的。

為了遷移使用根認證開始使用SASL的現有集群,請首先確保已將2.6.0或更高版本部署到所有集群節點以及需要連接到集群的任何外部應用程序。只有HDFS客戶端的2.6.0和更高版本可以連接到使用SASL進行數據傳輸協議認證的DataNode,因此在遷移之前所有調用者都必須具有正確的版本。在任何地方部署版本2.6.0或更高版本后,更新任何外部應用程序的配置以啟用SASL。如果為SASL啟用了HDFS客戶端,則它可以成功連接到使用根認證或SASL認證運行的DataNode。更改所有客戶端的配置可確保DataNodes上的后續配置更改不會中斷應用程序。最后,可以通過更改其配置和重新啟動來遷移每個單獨的DataNode。在此遷移期間,可以混合使用一些以root身份驗證運行的DataNode和一些以SASL身份驗證運行的DataNode,因為啟用了SASL的HDFS客戶端可以連接到這兩個。

7.數據機密性

7.1RPC上的數據加密

在hadoop服務和客戶端之間傳輸的數據可以在線上加密。在core-site.xml中將hadoop.rpc.protection設置為privacy會激活數據加密。

7.2塊數據傳輸上的數據加密

您需要在hdfs-site.xml中將dfs.encrypt.data.transfer設置為true,以便為DataNode的數據傳輸協議激活數據加密。

或者,您可以將dfs.encrypt.data.transfer.algorithm設置為3des或rc4,以選擇特定的加密算法。如果未指定,則使用系統上配置的JCE默認值,這通常為3DES。

dfs.encrypt.data.transfer.ciphersuites設置為AES / CTR / NoPadding將激活AES加密。默認情況下,這是未指定的,因此不使用AES。當使用AES時,在初始密鑰交換期間仍使用dfs.encrypt.data.transfer.algorithm中指定的算法。AES密鑰位長度可以通過將dfs.encrypt.data.transfer.cipher.key.bitlength設置為128,192或256來配置。默認值為128

AES提供最大的加密強度和最佳性能。此時,3DES和RC4在Hadoop集群中更頻繁地使用。

7.3HTTP上的數據加密

Web控制臺和客戶端之間的數據傳輸使用SSL(HTTPS)進行保護。建議使用SSL配置,但不需要使用Kerberos配置Hadoop安全性。

8.配置

8.1HDFS和本地文件系統路徑的權限

下表列出了HDFS和本地文件系統(在所有節點上)上的各種路徑和建議的權限:

Filesystem Path User:Group Permissions
local dfs.namenode.name.dir hdfs:hadoop drwx——
local dfs.datanode.data.dir hdfs:hadoop drwx——
local $HADOOP_LOG_DIR hdfs:hadoop drwxrwxr-x
local $YARN_LOG_DIR yarn:hadoop drwxrwxr-x
local yarn.nodemanager.local-dirs yarn:hadoop drwxr-xr-x
local yarn.nodemanager.log-dirs yarn:hadoop drwxr-xr-x
local container-executor root:hadoop –Sr-s–*
local conf/container-executor.cfg root:hadoop r——-*
hdfs / hdfs:hadoop drwxr-xr-x
hdfs /tmp hdfs:hadoop drwxrwxrwxt
hdfs /user hdfs:hadoop drwxr-xr-x
hdfs yarn.nodemanager.remote-app-log-dir yarn:hadoop drwxrwxrwxt
hdfs mapreduce.jobhistory.intermediate-done-dir mapred:hadoop drwxrwxrwxt
hdfs mapreduce.jobhistory.done-dir mapred:hadoop drwxr-x—

8.2Common 配置

為了在hadoop中打開RPC身份驗證,將hadoop.security.authentication屬性的值設置為“kerberos”,并正確設置下面列出的安全相關設置。

以下屬性應在集群中所有節點的core-site.xml中。

Parameter Value Notes
hadoop.security.authentication kerberos simple:無認證。 (默認值)kerberos:啟用Kerberos認證。
hadoop.security.authorization true 啟用。
hadoop.rpc.protection authentication 認證:僅認證(默認);完整性:除了認證之外的完整性檢查;隱私:數據加密除了完整性
hadoop.security.auth_to_local RULE:exp1 RULE:exp2 … DEFAULT 值為包含新行字符的字符串。有關exp的格式,請參閱。
hadoop.proxyuser.superuser.hosts 逗號分隔的允許超級用戶訪問的主機進行模擬。 *表示通配符。
hadoop.proxyuser.superuser.groups 由超級用戶模擬的用戶所屬的逗號分隔組。 *表示通配符。

8.3NameNode

Parameter Value Notes
dfs.block.access.token.enable true 為安全操作啟用HDFS塊訪問令牌。
dfs.namenode.kerberos.principal nn/_HOST@REALM.TLD NameNode的Kerberos主體名稱。
dfs.namenode.keytab.file /etc/security/keytab/nn.service.keytab NameNode的Kerberos keytab文件。
dfs.namenode.kerberos.internal.spnego.principal HTTP/_HOST@REALM.TLD NameNode用于Web UI SPNEGO身份驗證的服務器主體。 SPNEGO服務器主體以常規前綴HTTP /開頭。 如果值為“*”,則Web服務器將嘗試使用keytab文件dfs.web.authentication.kerberos.keytab中指定的每個主體登錄。 對于大多數部署,可以將其設置為$ {dfs.web.authentication.kerberos.principal},即使用dfs.web.authentication.kerberos.principal的值。
dfs.web.authentication.kerberos.keytab /etc/security/keytab/spnego.service.keytab NameNode的SPNEGO keytab文件。在HA群集中,此設置與“日志節點”共享。

以下設置允許配置對NameNode Web UI的SSL訪問(可選)。

Parameter Value Notes
dfs.http.policy HTTP_ONLY or HTTPS_ONLY or HTTP_AND_HTTPS HTTPS_ONLY關閉http訪問。 此選項優先于已棄用的配置dfs.https.enable和hadoop.ssl.enabled。 如果使用SASL來驗證數據傳輸協議优乐棋牌app下载,而不是以root用戶身份運行DataNode并使用特權端口,則此屬性必須設置為HTTPS_ONLY以保證HTTP服務器的身份驗證。 (請參閱dfs.data.transfer.protection。)
dfs.namenode.https-address nn_host_fqdn:50470
dfs.https.port 50470
dfs.https.enable true 此值已棄用。 使用dfs.http.policy

8.4Secondary NameNode

Parameter Value Notes
dfs.namenode.secondary.http-address snn_host_fqdn:50090
dfs.secondary.namenode.keytab.file /etc/security/keytab/sn.service.keytab Secondary NameNode的Kerberos keytab文件。
dfs.secondary.namenode.kerberos.principal sn/_HOST@REALM.TLD Secondary NameNode的Kerberos主體名稱。
dfs.secondary.namenode.kerberos.internal.spnego.principal HTTP/_HOST@REALM.TLD Secondary NameNode用于Web UI SPNEGO身份驗證的服務器主體。 SPNEGO服務器主體以常規前綴HTTP /開頭。 如果值為“*”,則Web服務器將嘗試使用keytab文件dfs.web.authentication.kerberos.keytab中指定的每個主體登錄。 對于大多數部署,可以將其設置為$ {dfs.web.authentication.kerberos.principal},即使用dfs.web.authentication.kerberos.principal的值。
dfs.namenode.secondary.https-port 50470

8.5JournalNode

Parameter Value Notes
dfs.journalnode.kerberos.principal jn/_HOST@REALM.TLD JournalNode的Kerberos主體名稱。
dfs.journalnode.keytab.file /etc/security/keytab/jn.service.keytab JournalNode的Kerberos keytab文件。
dfs.journalnode.kerberos.internal.spnego.principal HTTP/_HOST@REALM.TLD 啟用Kerberos安全時由JournalNode用于Web UI SPNEGO身份驗證的服務器主體。 SPNEGO服務器主體以常規前綴HTTP /開頭。 如果值為“*”,則Web服務器將嘗試使用keytab文件dfs.web.authentication.kerberos.keytab中指定的每個主體登錄。 對于大多數部署,可以將其設置為$ {dfs.web.authentication.kerberos.principal},即使用dfs.web.authentication.kerberos.principal的值。
dfs.web.authentication.kerberos.keytab /etc/security/keytab/spnego.service.keytab JournalNode的SPNEGO keytab文件。 在HA群集中,此設置與名稱節點共享。

8.6DataNode

Parameter Value Notes
dfs.datanode.data.dir.perm 700
dfs.datanode.address 0.0.0.0:1004 安全DataNode必須使用特權端口,以確保服務器安全啟動。 這意味著服務器必須通過jsvc啟動。 或者,如果使用SASL來驗證數據傳輸協議优乐棋牌app下载,則必須將其設置為非特權端口。 (請參閱dfs.data.transfer.protection。)
dfs.datanode.http.address 0.0.0.0:1006 安全DataNode必須使用特權端口,以確保服務器安全啟動。 這意味著服務器必須通過jsvc啟動。
dfs.datanode.https.address 0.0.0.0:50470
dfs.datanode.kerberos.principal dn/_HOST@REALM.TLD DataNode的Kerberos主體名稱。
dfs.datanode.keytab.file /etc/security/keytab/dn.service.keytab DataNode的Kerberos keytab文件。
dfs.encrypt.data.transfer false 使用數據加密時設置為true
dfs.encrypt.data.transfer.algorithm 當使用數據加密來控制加密算法時,可選擇設置為3des或rc4
dfs.encrypt.data.transfer.cipher.suites 可選擇設置為AES / CTR / NoPadding,以在使用數據加密時激活AES加密
dfs.encrypt.data.transfer.cipher.key.bitlength 可選設置為128,192或256,以便在使用帶數據加密的AES時控制密鑰位長度
dfs.data.transfer.protection 認證:僅認證; 完整性:除了認證之外的完整性檢查; privacy:除完整性之外的數據加密默認情況下未指定此屬性。 設置此屬性會啟用SASL來驗證數據傳輸協議。 如果啟用,則dfs.datanode.address必須使用非特權端口,dfs.http.policy必須設置為HTTPS_ONLY,并且在啟動DataNode進程時必須取消定義HADOOP_SECURE_DN_USER環境變量。

8.7WebHDFS

Parameter Value Notes
dfs.web.authentication.kerberos.principal http/_HOST@REALM.TLD WebHDFS的Kerberos主體名稱。在HA群集中,此設置通常由JournalNodes用于使用SPNEGO安全訪問JournalNode HTTP服務器。
dfs.web.authentication.kerberos.keytab /etc/security/keytab/http.service.keytab WebHDFS的Kerberos keytab文件。在HA群集中,此設置通常用于JournalNodes,用于使用SPNEGO安全地訪問JournalNode HTTP服務器。

8.8ResourceManager

Parameter Value Notes
yarn.resourcemanager.principal rm/_HOST@REALM.TLD ResourceManager的Kerberos主體名稱。
yarn.resourcemanager.keytab /etc/security/keytab/rm.service.keytab ResourceManager的Kerberos keytab文件。

8.9NodeManager

Parameter Value Notes
yarn.nodemanager.principal nm/_HOST@REALM.TLD NodeManager的Kerberos主體名稱。
yarn.nodemanager.keytab /etc/security/keytab/nm.service.keytab NodeManager的Kerberos keytab文件。
yarn.nodemanager.container-executor.class org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor 使用LinuxContainerExecutor。
yarn.nodemanager.linux-container-executor.group hadoop Unix組的NodeManager。
yarn.nodemanager.linux-container-executor.path /path/to/bin/container-executor Linux容器執行程序的可執行文件的路徑。

8.10Configuration for WebAppProxy

WebAppProxy在應用程序導出的Web應用程序和最終用戶之間提供一個代理。如果啟用了安全性,則會在訪問可能不安全的Web應用程序之前警告用戶。使用代理的身份驗證和授權就像任何其他特權Web應用程序一樣處理。

Parameter Value Notes
yarn.web-proxy.address WebAppProxy host:port for proxy to AM web apps. host:port如果這與yarn.resourcemanager.webapp.address相同,或者沒有定義优乐棋牌app下载,那么ResourceManager將運行代理,否則需要啟動獨立的代理服務器。
yarn.web-proxy.keytab /etc/security/keytab/web-app.service.keytab WebAppProxy的Kerberos keytab文件。
yarn.web-proxy.principal wap/_HOST@REALM.TLD WebAppProxy的Kerberos主體名稱。

8.11LinuxContainerExecutor

YARN框架使用的ContainerExecutor,它定義了任何容器的啟動和控制方式。

以下是可用的Hadoop YARN:

ContainerExecutor Description
DefaultContainerExecutor YARN用于管理容器執行的默認執行程序。容器進程具有與NodeManager相同的Unix用戶。
LinuxContainerExecutor 僅在GNU / Linux上支持,此執行程序作為提交應用程序的YARN用戶(啟用完全安全性時)運行容器,或在未啟用完全安全性時作為專用用戶(默認為nobody)運行容器。啟用完全安全性后,此執行程序需要在啟動容器的集群節點上創建所有用戶帳戶。它使用包含在Hadoop分發中的setuid可執行文件。 NodeManager使用此可執行文件啟動和終止容器。 setuid可執行文件切換到已提交應用程序并啟動或殺死容器的用戶。為了最大的安全性,此執行程序設置容器使用的本地文件和目錄的受限權限和用戶/組所有權,例如共享對象,jar,中間文件优乐棋牌app下载,日志文件等。特別注意,因為這一點,除了應用程序所有者和NodeManager,沒有其他用戶可以訪問任何本地文件/目錄,包括作為分布式緩存的一部分本地化的本地文件/目錄。

要構建LinuxContainerExecutor可執行文件,請運行:

 $ mvn package -Dcontainer-executor.conf.dir=/etc/hadoop/

Dcontainer-executor.conf.dir中傳遞的路徑應該是集群節點上setuid可執行文件的配置文件所在的路徑。可執行文件應安裝在$ HADOOP_YARN_HOME / bin中。

可執行文件必須具有特定權限:6050或–Sr-s —用戶由root(超級用戶)擁有的權限和由特殊組(例如hadoop)擁有的組,其中NodeManager Unix用戶是組成員 而沒有普通的應用程序用戶。 如果任何應用程序用戶屬于此特殊組,則安全性將受到影響。 應為conf / yarn-site.xml和conf / container-executor.cfg中的配置屬性yarn.nodemanager.linux-container-executor.group指定此特殊組名。

例如,假設NodeManager作為用戶yarn運行,它們是users和hadoop組的一部分,它們都是主組。 還讓用戶同時擁有yarn和另一個用戶(應用程序提交者)alice作為其成員,并且alice不屬于hadoop。 通過上面的描述,setuid / setgid可執行文件應設置為6050或–Sr-s —,用戶所有者為yarn,組用戶為hadoop,其中有yarn作為其成員(而不是有alice的用戶 作為除紗線以外的成員)。

LinuxTaskController需要包含并導向到yarn.nodemanager.local-dirsyarn.nodemanager.log-dirs中指定的目錄的路徑,以設置755權限,如上面關于目錄權限的表所述。

  • conf/container-executor.cfg

可執行文件需要一個名為container-executor.cfg的配置文件,以存在于傳遞給上述mvn目標的配置目錄中。

配置文件必須由運行NodeManager的用戶擁有(上例中的用戶yarn),由任何人擁有的組擁有,并且應具有權限0400或r ——–。

可執行文件需要以下配置項才能出現在conf / container-executor.cfg文件中。這些項應該被提及為簡單的鍵=值對,每行一個:

Parameter Value Notes
yarn.nodemanager.linux-container-executor.group hadoop Unix組的NodeManager。 container-executor二進制文件的組所有者應該是這個組。 應該與配置NodeManager的值相同。 此配置是驗證container-executor二進制文件的安全訪問所必需的。
banned.users hdfs,yarn,mapred,bin 禁止用戶。
allowed.system.users foo,bar 允許的系統用戶。
min.user.id 1000 防止其他超級用戶。

要重新覆蓋,這里是與LinuxContainerExecutor相關的各種路徑所需的本地文件系統權限:

Filesystem Path User:Group Permissions
local container-executor root:hadoop –Sr-s–*
local conf/container-executor.cfg root:hadoop r——-*
local yarn.nodemanager.local-dirs yarn:hadoop drwxr-xr-x
local yarn.nodemanager.log-dirs yarn:hadoop drwxr-xr-x

8.12MapReduce JobHistory Server

Parameter Value Notes
mapreduce.jobhistory.address MapReduce JobHistory Server host:port 默認端口為10020。
mapreduce.jobhistory.keytab /etc/security/keytab/jhs.service.keytab MapReduce JobHistory服務器的Kerberos keytab文件。
mapreduce.jobhistory.principal jhs/_HOST@REALM.TLD MapReduce JobHistory Server的Kerberos主體名稱。

9.多宿主

其中每個主機在DNS中具有多個主機名(例如,對應于公共和專用網絡接口的不同主機名)的多宿主設置可能需要附加配置以使Kerberos認證工作。 請參閱

10.參考文獻

  1. O’Malley O et al.
  2. O’Malley O,
  3. Loughran S.,

請關注公眾號獲取更多資料



】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇Hadoop+Hive+Mysql環境搭建 下一篇安裝spark,基于hadoop的