如何使用 Amazon EMR YARN 调度器队列配置或修改节点标签?
上次更新日期:2022 年 12 月 13 日
我想使用 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 节点标签功能时,应用程序主容器将在任何节点类型(如核心或任务节点)中启动。对任务节点没有任何限制。如果使用竞价型实例配置任务节点,则如果任务节点由于竞价型容量限制而关闭,则运行的作业可能会失败。
关闭 Amazon EMR-5.x.x 系列中 Amazon EMR 版本 5.19.x 及更高版本中的 YARN 标签功能
创建新的 EMR 集群时关闭默认 YARN 标签功能:
1. 在 Edit software settings(编辑软件设置)的 Enter configuration(输入配置)部分中添加以下属性:
[
{
"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. 在 Bootstrap Actions(引导操作)部分中,将新创建的脚本添加为自定义操作,然后继续创建集群。
#!/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 标签功能:
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. 在 Edit software settings(编辑软件设置)的 Enter configuration(输入配置)部分中添加以下属性,然后继续创建集群:
[
{
"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 控制台中,选择 Clusters(集群),然后选择要编辑的集群。
2. 选择 Configurations(配置)选项卡。
3. 在 Reconfigure(重新配置)选项卡下选择 Edit in JSON(以 JSON 格式编辑)选项,然后添加以下属性。
[
{
"Classification": "yarn-site",
"Properties": {
"yarn.node-labels.enabled": "true",
"yarn.node-labels.am.default-node-label-expression": "CORE"
}
}
]
4. 选择 Apply this configuration to all active instance groups(将此配置应用于所有活动实例组)选项,然后保存更改。
5. 通过在主节点中运行以下命令来确认已应用更改:
yarn cluster --list-node-labels
以下是前述命令的预期输出:
<<<<< Node Labels: <CORE:exclusivity=false> >>>>>>