我在YARN Fair Scheduled队列上重新平衡Apache Spark作业资源时遇到问题.
对于测试,我已经配置了Hadoop 2.6(也尝试过2.7)以在MacOS上使用本地HDFS以伪分布式模式运行.对于作业提交使用Spark的网站上的 "Pre-build Spark 1.4 for Hadoop 2.6 and later"(也试过1.5).
在Hadoop MapReduce作业上使用基本配置进行测试时,Fair Scheduler按预期工作:当群集资源超过某个最大值时,将计算公平份额,并根据这些计算抢占和平衡不同队列中作业的资源.
使用Spark作业运行相同的测试,在这种情况下,YARN正在为每个作业正确计算公平份额,但Spark容器的资源不会重新平衡.
这是我的conf文件:
$ HADOOP_HOME的/ etc/Hadoop的/纱线的site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
<name>yarn.scheduler.fair.preemption</name>
<value>true</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
$ HADOOP_HOME的/ etc/Hadoop的/公平scheduler.xml
<?xml version="1.0" encoding="UTF-8"?>
<allocations>
<defaultQueueSchedulingPolicy>fair</defaultQueueSchedulingPolicy>
<queue name="prod">
<weight>40</weight>
<schedulingPolicy>fifo</schedulingPolicy>
</queue>
<queue name="dev">
<weight>60</weight>
<queue name="eng" />
<queue name="science" />
</queue>
<queuePlacementPolicy>
<rule name="specified" create="false" />
<rule name="primaryGroup" create="false" /> …Run Code Online (Sandbox Code Playgroud)