需要了解何时使用 spark.dynamicAllocation.enabled - 使用它的优点和缺点是什么?我有队列提交工作。
注意:我的数据非常庞大(处理将在10GB数据上进行转换)。
哪个Job获得了对作业A或作业B的执行者分配的偏好,以及如何使用spark来协调b / w 2个应用程序?
答案 0 :(得分:3)
执行者的动态分配是关于调整执行者池的大小。
spark.dynamicAllocation.enabled 是否使用动态资源分配,该分配根据工作负载上下调整使用此应用程序注册的执行程序的数量。
稍后在Dynamic Resource Allocation:
Spark提供了一种机制,可根据工作负载动态调整应用程序占用的资源。这意味着如果不再使用应用程序,您的应用程序可能会将资源返回给群集,并在有需求时再次请求它们。如果多个应用程序共享Spark群集中的资源,则此功能特别有用。
换句话说,在执行作业B之前,作业A 通常会完成。 Spark作业通常顺序执行,即作业必须在另一个作业开始之前完成。
一般... 的
SparkContext是线程安全的,可以处理来自Spark应用程序的作业。这意味着您可能同时或一个接一个地提交作业,并且在某些配置中期望这两个作业将并行运行。
引用Scheduling Within an Application:
在给定的Spark应用程序(SparkContext实例)中,如果从单独的线程提交多个并行作业,则它们可以同时运行。通过“作业”,在本节中,我们指的是Spark操作(例如,保存,收集)以及需要运行以评估该操作的任何任务。 Spark的调度程序是完全线程安全的,并支持此用例,以支持提供多个请求的应用程序(例如,查询多个用户)。
默认情况下,Spark的调度程序以FIFO方式运行作业。每个作业分为“阶段”(例如地图和减少阶段),第一个作业优先于所有可用资源,而其阶段有任务要启动,然后第二个作业获得优先权等。
还可以在作业之间配置公平共享。在公平共享下,Spark以“循环”方式在作业之间分配任务,以便所有作业获得大致相等的群集资源份额。这意味着在长时间工作运行时提交的短工作可以立即开始接收资源,并且仍然可以获得良好的响应时间,而无需等待长时间的工作完成。此模式最适合多用户设置。
结束......
哪个Job获得了对作业A或作业B的执行者分配的偏好,以及如何使用spark来协调b / w 2个应用程序?
工作A.
除非您已启用Fair Scheduler Pools:
公平调度程序还支持将作业分组到池中,并为每个池设置不同的调度选项(例如权重)。例如,这可以用于为更重要的作业创建“高优先级”池,或者将每个用户的作业组合在一起,并为用户提供相同的份额,而不管他们拥有多少并发作业,而不是给予作业相等的份额。