如何使用 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 节点标签功能时,应用程序主容器将在任何节点类型(如核心或任务节点)中启动。对任务节点没有任何限制。如果使用竞价型实例配置任务节点,则如果任务节点由于竞价型容量限制而关闭,则运行的作业可能会失败。

关闭 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 标签功能:

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.    在 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>  >>>>>>

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