Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
如何在 Amazon EMR 中設定或修改 YARN 節點標籤?
我想在 Amazon EMR 中設定或修改 Apache Hadoop YARN 節點標籤。
簡短說明
預設的 YARN 節點標籤設定,會因您的 Amazon EMR 版本而有所不同。
Amazon EMR-5.x 發行版本中的 Amazon EMR 版本 5.19.x 及更高版本
依預設,系統會開啟 YARN 節點標籤功能。當您開啟此功能時,系統會針對具有下列屬性的核心節點標籤建立 CORE 節點標籤:
yarn.node-labels.enabled: true yarn.node-labels.am.default-node-label-expression: 'CORE'
YARN ApplicationMaster 容器僅會分配於核心節點上。所有其他容器沒有分割區限制。您可以在核心節點或任務節點上分配容器。
Amazon EMR 版本 6.x 及更高版本
YARN 節點標籤功能預設會關閉。您可以在核心和任務節點上執行應用程式的主要程序。
解決方法
**注意:**在生產環境中設定 YARN 節點標籤之前,先行在測試環境中加以設定是最佳做法。當您關閉 YARN 節點標籤功能時,Application-Master 容器會以任何節點類型啟動。任務節點沒有限制。對於使用 Amazon Elastic Compute Cloud (Amazon EC2) Spot 執行個體設定的任務節點,如果任務節點因 Spot 容量限制而停機,執行中的任務可能會失敗。
在 Amazon EMR-5.x 發行版本中的 Amazon EMR 版本 5.19.x 及更高版本中關閉 YARN 標籤
建立 EMR 叢集時關閉 YARN 標籤功能
請完成下列步驟:
-
在 Edit software settings (編輯軟體設定) 區段中的 Enter configuration (輸入組態) 下,新增下列屬性:
[ { "Classification": "yarn-site", "Properties": { "yarn.node-labels.enabled": "false", "yarn.node-labels.am.default-node-label-expression": "" } } ]
-
請使用 **.sh ** 副檔名建立下列指令碼,然後將指令碼上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體:
#!/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
-
在 Bootstrap Actions (引導操作) 區段中,將指令碼新增為自訂動作,然後建立叢集。
-
若要確認已套用變更,請在主節點中執行下列命令:
yarn cluster --list-node-labels
輸出會顯示節點標籤的空白值:
<<<<< Node Labels: >>>>>>
關閉現有的 Amazon EMR 叢集中的 YARN 標籤功能
請完成下列步驟:
-
建立 yarn-site.xml 檔案的備份。路徑為 :/etc/hadoop/conf/yarn-site.xml。
-
執行下列命令,以檔案編輯器模式開啟 yarn-site.xml:
sudo su vi yarn-site.xml
-
將 arn.node-labels.enabled 屬性值變更為 false:
<property> <name>yarn.node-labels.enabled</name> <value>false</value> </property>
-
移除 yarn.node-labels.am.default-node-label-expression 屬性中的 CORE 值:
<property> <name>yarn.node-labels.am.default-node-label-expression</name> <value></value> </property>
-
如果您的叢集版本超過 5.29.0,請執行下列命令以重新啟動 ResourceManager:
sudo systemctl restart hadoop-yarn-resourcemanager.service
sudo systemctl status hadoop-yarn-resourcemanager.service
-or-
如果您的叢集版本為 5.29.0 或更早版本,請執行下列命令以重新啟動 ResourceManager:sudo stop hadoop-yarn-resourcemanager
sudo start hadoop-yarn-resourcemanager
-
若要確認已套用變更,請執行下列命令:
yarn cluster --list-node-labels
輸出會顯示節點標籤的空白值:
<<<<< Node Labels: >>>>>>
在 Amazon EMR 版本 6.x 及更高版本中開啟 YARN 標籤功能
建立 EMR 叢集時開啟 YARN 標籤功能
-
在 Edit software settings (編輯軟體設定) 區段中的 Enter configuration (輸入組態) 下,新增下列屬性:
[ { "Classification": "yarn-site", "Properties": { "yarn.node-labels.enabled": "true", "yarn.node-labels.am.default-node-label-expression": "CORE" } } ]
-
建立叢集。
-
若要確認已套用變更,請在主節點中執行下列命令:
yarn cluster --list-node-labels
輸出會顯示節點標籤的空白值:
<<<<< Node Labels: <CORE:exclusivity=false> >>>>>
在現有 EMR 叢集中開啟 YARN 標籤功能
請完成下列步驟:
-
開啟 Amazon EMR 主控台。
-
在導覽窗格中選擇 Clusters (叢集),然後選取想要編輯的叢集。
-
選擇 Configurations (組態) 索引標籤。
-
在 Instance group configurations (執行個體群組組態) 下,選擇執行個體群組。
-
選擇 Reconfigure (重新設定) 圖示,選取 Edit in JSON (在 JSON 中編輯),然後新增下列屬性:
[ { "Classification": "yarn-site", "Properties": { "yarn.node-labels.enabled": "true", "yarn.node-labels.am.default-node-label-expression": "CORE" } } ]
-
選擇 Apply this configuration to all active instance groups (將此組態套用至所有作用中的執行個體群組),然後儲存變更。
-
在主節點中以 hadoop 使用者身分執行下列命令:
yarn rmadmin -addToClusterNodeLabels "CORE(exclusive=false)"
-
若要確認已套用變更,請在主節點中執行下列命令:
yarn cluster --list-node-labels
輸出會顯示節點標籤的空白值:
<<<<< Node Labels: <CORE:exclusivity=false> >>>>>>
