如何使用 Amazon EMR YARN 排程器佇列設定或修改節點標記?

2 分的閱讀內容
0

我想要使用 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>  >>>>>>

AWS 官方
AWS 官方已更新 1 年前