如何在 Amazon EMR 中配置或修改 YARN 节点标签?

2 分钟阅读
0

我想在 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 标签功能

完成下面的步骤:

  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) 存储桶:

    #!/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
  3. Bootstrap Actions(引导操作)部分中,将该脚本添加为自定义操作,然后创建集群

  4. 要确认更改已应用,请在主节点中运行以下命令:

    yarn cluster --list-node-labels

    输出将显示节点标签的空值:

    <<<<< Node Labels: >>>>>>

在现有 Amazon 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. 如果您的集群版本高于 5.29.0,请运行以下命令以重启资源管理器:

    sudo systemctl restart hadoop-yarn-resourcemanager.service
    sudo systemctl status hadoop-yarn-resourcemanager.service

    -or-
    如果您的集群版本为 5.29.0 或更早版本,请运行以下命令来重启资源管理器:

    sudo stop hadoop-yarn-resourcemanager
    sudo start hadoop-yarn-resourcemanager
  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. 创建集群

  3. 要确认更改已应用,请在主节点中运行以下命令:

    yarn cluster --list-node-labels

    输出将显示节点标签的空值:

    <<<<< Node Labels: <CORE:exclusivity=false>  >>>>>

在现有 EMR 集群中启用 YARN 标签功能

完成下面的步骤:

  1. 打开 Amazon EMR 控制台

  2. 在导航窗格中,选择 Clusters(集群),然后选择要编辑的集群。

  3. 选择 Configurations(配置)选项卡。

  4. Instance group configurations(实例组配置)下,选择一个实例组。

  5. 选择 Reconfigure(重新配置)图标,选择 Edit in JSON(以 JSON 格式编辑),然后添加以下属性:

    [  
      {  
        "Classification": "yarn-site",  
        "Properties": {  
          "yarn.node-labels.enabled": "true",  
          "yarn.node-labels.am.default-node-label-expression": "CORE"  
        }  
      }  
    ]
  6. 选择 Apply this configuration to all active instance groups(将此配置应用于所有活动实例组),然后保存更改。

  7. 在主节点中以 hadoop 用户身份运行以下命令:

    yarn rmadmin -addToClusterNodeLabels "CORE(exclusive=false)"
  8. 要确认更改已应用,请在主节点中运行以下命令:

    yarn cluster --list-node-labels

    输出将显示节点标签的空值:

    <<<<< Node Labels: <CORE:exclusivity=false>  >>>>>>
AWS 官方
AWS 官方已更新 7 个月前