我很困惑,因为这些池是为每个spark应用程序创建的,而且如果我保持minshare的池大于集群的总核心,则池已经创建。
因此,如果这些池是内部应用程序,我需要手动将不同的池分配给不同的spark作业,因为如果我使用sparkcontext.setlocalproperty来设置池,那么该应用程序的所有阶段都会转到该池。
重点是我们可以从两个不同的应用程序中获取作业,进入同一个池,所以如果我有应用程序a1并使用了sparkcontext。(pool,p1),那么应用程序a2和使用的sparkcontext。(pool,p1 ),applocation的作业将转到同一个池p1或p1,a1与p1的a2不同。
答案 0 :(得分:0)
正如Spark Scheduling Within an Application中的官方文档中所述:
在给定的Spark应用程序(SparkContext实例)中,如果多个并行作业是从不同的线程提交的,则它们可以同时运行。
以后在同一份文件中:
从Spark 0.8开始,还可以在作业之间配置公平共享。在公平共享下,Spark以“循环”方式在作业之间分配任务,以便所有作业获得大致相等的群集资源份额。这意味着在长时间工作运行时提交的短工作可以立即开始接收资源,并且仍然可以获得良好的响应时间,而无需等待长时间的工作完成。此模式最适合多用户设置。
这样,调度发生在为Spark应用程序提供的资源中,以及它获取的数量取决于集群管理器中可用的CPU / vcores和内存。
Fair Scheduler模式主要用于具有并行作业的Spark应用程序。