我想要使用 Amazon EMR Apache YARN 排程器佇列來設定或修改節點標記。
簡短說明
EMR 叢集的預設 YARN 節點標記設定如下:
在 Amazon EMR-5.x.x 系列中 Amazon EMR 5.19.x 及以上版本:
YARN 節點標記功能預設為開啟狀態。這表示 CORE 節點標籤是針對具有以下屬性的核心節點建立的。YARN 應用程式主容器僅分配於核心節點上。而對於所有其他容器,不存在分區限制。您可以在核心或任務節點上分配容器。
yarn.node-labels.enabled: true
yarn.node-labels.am.default-node-label-expression: 'CORE'
Amazon EMR 6.X 及更新版本:
YARN 節點標記功能預設為關閉狀態。應用程式主程序可以同時在核心和任務節點上執行。
解決方案
**注意:**最佳實務是先在測試環境中執行變更,再於生產環境中繼續執行。此外,當您關閉 YARN 節點標籤功能時,應用程式主容器會以任何節點類型 (例如核心或任務) 啟動。任務節點沒有限制。如果您使用 Spot 執行個體設定任務節點,則當任務節點因 Spot 容量限制而關閉時,執行工作可能會失敗。
關閉 Amazon EMR-5.x.x 系列中 Amazon EMR 5.19.x 及以上版本的 YARN 標籤功能
建立新 EMR 叢集時,請關閉預設的 YARN 標籤功能:
1. 將下列屬性新增至編輯軟體設定的輸入組態部分:
[
{
"Classification": "yarn-site",
"Properties": {
"yarn.node-labels.enabled": "false",
"yarn.node-labels.am.default-node-label-expression": ""
}
}
]
2. 使用下列內容建立含有 .sh 副檔名的指令碼,並將其上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。
3. 在引導操作部分,將新建立的指令碼新增為自訂動作,然後繼續建立叢集。
#!/bin/bash
sudo sed -i 's/yarn rmadmin -addToClusterNodeLabels "CORE(exclusive=false)"/echo "NO LABELS"/g' /var/aws/emr/bigtop-deploy/puppet/modules/hadoop/manifests/init.pp
4. 叢集建立完成後,請在主節點中執行下列命令,以確認已套用變更:
yarn cluster --list-node-labels
以下是前述命令的預期輸出,顯示節點標籤的空值:
<<<<< Node Labels: >>>>>>
關閉現有 EMR 叢集中的預設 YARN 標籤功能:
1. 使用 SSH 連線至 Amazon EMR 主節點。
2. 建立現有 yarn-site.xml 檔案的備份。路徑為 :/etc/hadoop/conf/yarn-site.xml。
3. 使用下列命令以檔案編輯器模式開啟 yarn-site.xml:
sudo su vi yarn-site.xml
4. 將 yarn.node-labels.enabled 的屬性值變更為 false。
<property>
<name>yarn.node-labels.enabled</name>
<value>false</value>
</property>
5. 在 yarn.node-labels.am.default-node-label-expression 屬性中移除 CORE 值,如下列範例所示:
<property>
<name>yarn.node-labels.am.default-node-label-expression</name>
<value></value>
</property>
6. 重新啟動 YARN ResourceManger 服務:
sudo systemctl restart hadoop-yarn-resourcemanager.service
sudo systemctl status hadoop-yarn-resourcemanager.service
7. 使用下列指令確認已成功套用變更:
yarn cluster --list-node-labels
以下是前述命令的預期輸出,顯示節點標籤的空值:
<<<<< Node Labels: >>>>>>
關閉 Amazon EMR 6.x 及更新版本的 YARN 標籤功能
建立新 EMR 叢集時,請開啟 YARN 標籤功能:
1. 將下列屬性新增至編輯軟體設定的輸入組態部分,然後繼續建立叢集:
[
{
"Classification": "yarn-site",
"Properties": {
"yarn.node-labels.enabled": "true",
"yarn.node-labels.am.default-node-label-expression": "CORE"
}
}
]
2. 叢集建立完成後,請在主節點中執行下列命令,以確認已成功套用變更:
yarn cluster --list-node-labels
以下是前述命令的預期輸出:
<<<<< Node Labels: <CORE:exclusivity=false> >>>>>
開啟現有 EMR 叢集中的 YARN 標籤功能:
1. 從 Amazon EMR 主控台選取叢集,然後選取要編輯的叢集。
2. 選擇組態索引標籤。
3. 選取重新設定索引標籤下的以 JSON 格式編輯選項,然後新增下列屬性。
[
{
"Classification": "yarn-site",
"Properties": {
"yarn.node-labels.enabled": "true",
"yarn.node-labels.am.default-node-label-expression": "CORE"
}
}
]
4. 選取將此設定套用至所有作用中執行個體群組選項,然後儲存變更。
5. 在主節點中執行下列命令,以確認已套用變更:
yarn cluster --list-node-labels
以下是前述命令的預期輸出:
<<<<< Node Labels: <CORE:exclusivity=false> >>>>>>