我想了解Spark的FAIR调度模式的内部结构。问题是似乎不像人们所期望的那样公平official Spark documentation:
从Spark 0.8开始,还可以在作业之间配置公平共享。在公平共享下,Spark以“循环”方式在作业之间分配任务,以便所有作业获得大致相等的群集资源份额。这意味着在长时间工作运行时提交的短工作可以立即开始接收资源,并且仍然可以获得良好的响应时间,而无需等待长时间的工作完成。此模式最适合多用户设置。
似乎工作没有得到平等处理,实际上是以十五顺序管理的。
提供有关该主题的更多信息:
我在YARN上使用Spark。我使用Spark的Java API。要启用公平模式,代码为:
SparkConf conf = new SparkConf();
conf.set("spark.scheduler.mode", "FAIR");
conf.setMaster("yarn-client").setAppName("MySparkApp");
JavaSparkContext sc = new JavaSparkContext(conf);
我错过了什么吗?
答案 0 :(得分:8)
出现您没有设置池,所有作业最终都在Configuring Pool Properties中描述的default
池中。
也可以通过配置文件修改特定池的属性。
以后
conf / fairscheduler.xml.template中也提供了完整的示例。请注意,未在XML文件中配置的任何池将只获取所有设置的默认值(调度模式FIFO,权重1和minShare 0)。
也你没有设置本地属性来设置用于给定作业的池,如Fair Scheduler Pools中所述:
没有任何干预,新提交的作业会进入默认池,但可以通过将spark.scheduler.pool“local property”添加到提交它们的线程中的SparkContext来设置作业池。
最终可能意味着您使用单个default
FIFO池,因此FIFO模式下的一个池与没有池的FIFO相比没有任何变化。
只有你才能知道真正的答案:)