You need to enable JavaScript to run this app.
导航
Yarn Fair Scheduler配置
最近更新时间:2025.01.22 15:35:47首次发布时间:2025.01.22 15:35:47

队列设置

EMR 中 YARN 默认使用 CapacityScheduler 调度器,如有使用FairScheduler的需要,可在 EMR页面控制台 > on ECS > 集群名称 > 服务管理 > YARN > 服务参数 > yarn-site.xml中,配置 yarn.resourcemanager.scheduler.class 参数。

操作步骤

创建 Fair 队列配置文件

  1. 登录到运行 Yarn 的服务器节点。
  2. 使用文本编辑器(如 vi 或 nano)创建一个新的配置文件,例如 fair-scheduler.xml。
  3. 在配置文件中,首先定义根队列(root queue),这是所有其他队列的父队列。
<allocations><queue name="root"><minResources>10000 mb,0 vcores</minResources><maxResources>40000 mb,4 vcores</maxResources><weight>1.0</weight><schedulingPolicy>fair</schedulingPolicy></queue></allocations>

这里定义了根队列的最小资源(10000MB 内存和 0 个虚拟核心)、最大资源(40000MB 内存和 4 个虚拟核心)、权重(1.0)以及调度策略为 fair。

添加子队列

在根队列内部,可以添加多个子队列。例如,添加两个子队列 queue1 和 queue2:

<queue name="queue1"><minResources>5000 mb,0 vcores</minResources><maxResources>20000 mb,2 vcores</maxResources><weight>2.0</weight><schedulingPolicy>fair</schedulingPolicy></queue><queue name="queue2"><minResources>3000 mb,0 vcores</minResources><maxResources>15000 mb,1 vcores</maxResources><weight>1.5</weight><schedulingPolicy>fair</schedulingPolicy></queue>

每个子队列都有自己的最小和最大资源限制、权重以及调度策略。权重决定了队列在资源分配中的相对重要性。

配置用户到队列的映射

如果需要将特定用户的应用程序分配到特定队列,可以配置用户到队列的映射。例如,将用户 user1 的应用程序分配到 queue1,用户 user2 的应用程序分配到 queue2:

<user name="user1"><queue>queue1</queue></user><user name="user2"><queue>queue2</queue></user>

(可选)设置队列的抢占策略

如果希望队列能够在资源不足时抢占其他队列的资源,可以配置抢占策略。例如,允许 queue1 在资源不足时抢占其他队列的资源:

<queue name="queue1"><minResources>5000 mb,0 vcores</minResources><maxResources>20000 mb,2 vcores</maxResources><weight>2.0</weight><schedulingPolicy>fair</schedulingPolicy><queueMaxAMShare>0.5</queueMaxAMShare><fairSharePreemptionTimeout>60000</fairSharePreemptionTimeout><fairSharePreemptionThreshold>0.5</fairSharePreemptionThreshold></queue>

这里的 queueMaxAMShare 表示队列中应用程序的最大资源分配比例,fairSharePreemptionTimeout 表示抢占超时时间(毫秒),fairSharePreemptionThreshold 表示抢占阈值。

保存并部署配置文件

  1. 保存 fair-scheduler.xml 配置文件。
  2. 将配置文件复制到 Yarn 的配置目录中,通常为 $HADOOP_HOME/etc/hadoop/ 目录。
  3. 在 Yarn 的配置文件 yarn-site.xml 中,添加或修改以下属性,指定使用 Fair 调度器和配置文件路径:(可以在组件管理 - 服务管理 - Yarn - 配置文件中修改)
<property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value></property><property><name>yarn.scheduler.fair.allocation.file</name><value>/path/to/fair-scheduler.xml</value></property>

确保将 /path/to/fair-scheduler.xml 替换为实际的配置文件路径。

重启 Yarn 服务

  1. 在EMR对应集群的 组件管理 - 服务管理 - Yarn中重启Resource Manager以及所有Node Manager

验证配置

  1. 提交一些应用程序到 Yarn 集群,并查看它们是否按照 Fair 队列的配置进行资源分配。可以使用 Yarn 的命令行工具(如 yarn application -list 等)来查看应用程序的运行状态和资源分配情况。

注意事项

  1. 在配置 Fair 队列时,要根据集群的实际资源情况和应用程序的需求合理设置最小和最大资源限制、权重等参数,以避免资源浪费或过度竞争。
  2. 当修改 Fair 队列配置文件后,必须重启 Yarn 服务才能使新的配置生效。
  3. 在生产环境中,建议在测试环境中充分测试 Fair 队列配置的有效性和稳定性后再应用到生产集群。