有没有办法在运行时配置和更改Yarn调度程序?

时间:2017-04-13 17:57:52

标签: amazon-web-services hadoop yarn job-scheduling

目前我正在使用默认的Yarn调度程序,但希望执行类似 -

的操作
Run Yarn using the default scheduler
If (number of jobs in queue > X) {
    Change the Yarn scheduler to FIFO
}

这是否可以通过代码实现?

请注意,我在一个名为RM的aws EMR集群上运行Spark作业。

1 个答案:

答案 0 :(得分:1)

嗯,可以让轮询器检查当前队列(使用RM API)并更新yarn-site.xml +可能的RM重启。但是,重新启动RM可能会影响您的队列,因为当前作业将被终止或关闭(可能稍后重试)。

如果您需要在容量和FIFO调度程序之间进行更有效的切换,您可能还需要扩展这些类并设计自己的调度程序,它可以完成伪代码的工作。

默认情况下,EMR使用带有DefaultResourceCalculator的容量调度程序,并在默认队列上旋转作业。例如,EMR在如下路径上具有纱线配置:

/home/hadoop/.versions/2.4.0-amzn-6/etc/hadoop/yarn-site.xml

      <property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value></property>

with 

/home/hadoop/.versions/2.4.0-amzn-6/etc/hadoop/capacity-scheduler.xml

    org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator