天天看點

YARN配置Kerberos認證1. 環境說明2. 生成 keytab3. 修改 YARN 配置檔案4. 啟動服務5. 測試

系統環境:

作業系統:centos 6.6

hadoop版本:<code>cdh5.4</code>

jdk版本:<code>1.7.0_71</code>

運作使用者:root

叢集各節點角色規劃為:

cdh1作為master節點,其他節點作為slave節點,hostname 請使用小寫,要不然在內建 kerberos 時會出現一些錯誤。

在 cdh1 節點,即 kdc server 節點上執行下面指令:

拷貝 yarn.keytab 和 mapred.keytab 檔案到其他節點的 <code>/etc/hadoop/conf</code> 目錄

并設定權限,分别在 cdh1、cdh2、cdh3 上執行:

由于 keytab 相當于有了永久憑證,不需要提供密碼(如果修改 kdc 中的 principal 的密碼,則該 keytab 就會失效),是以其他使用者如果對該檔案有讀權限,就可以冒充 keytab 中指定的使用者身份通路 hadoop,是以 keytab 檔案需要確定隻對 owner 有讀權限(<code>0400</code>)

修改 yarn-site.xml,添加下面配置:

如果想要 yarn 開啟 ssl,則添加:

修改 mapred-site.xml,添加如下配置:

如果想要 mapreduce jobhistory 開啟 ssl,則添加:

在 <code>/etc/hadoop/conf</code> 目錄下建立 container-executor.cfg 檔案,内容如下:

設定該檔案權限:

注意:

<code>container-executor.cfg</code> 檔案讀寫權限需設定為 <code>400</code>,所有者為 <code>root:yarn</code>。

<code>yarn.nodemanager.linux-container-executor.group</code> 要同時配置在 yarn-site.xml 和 container-executor.cfg,且其值需要為運作 nodemanager 的使用者所在的組,這裡為 yarn。

<code>banned.users</code> 不能為空,預設值為 <code>hfds,yarn,mapred,bin</code>

<code>min.user.id</code> 預設值為 1000,在有些 centos 系統中,使用者最小 id 為500,則需要修改該值

確定 <code>yarn.nodemanager.local-dirs</code> 和 <code>yarn.nodemanager.log-dirs</code> 對應的目錄權限為 <code>755</code> 。

設定 /usr/lib/hadoop-yarn/bin/container-executor 讀寫權限為 <code>6050</code> 如下:

測試是否配置正确:

記住将修改的上面檔案同步到其他節點:cdh2、cdh3,并再次一一檢查權限是否正确。

resourcemanager 是通過 yarn 使用者啟動的,故在 cdh1 上先擷取 yarn 使用者的 ticket 再啟動服務:

然後檢視日志,确認是否啟動成功。

resourcemanager 是通過 yarn 使用者啟動的,故在 cdh2 和 cdh3 上先擷取 yarn 使用者的 ticket 再啟動服務:

resourcemanager 是通過 mapred 使用者啟動的,故在 cdh1 上先擷取 mapred 使用者的 ticket 再啟動服務:

檢查 web 頁面是否可以通路:http://cdh1:8088/cluster

運作一個 mapreduce 的例子:

如果沒有報錯,則說明配置成功。最後運作的結果為:

如果出現下面錯誤,請檢查環境變量中 <code>hadoop_yarn_home</code> 是否設定正确,并和 <code>yarn.application.classpath</code> 中的保持一緻。