2017-05-27 152 views
1

需要了解何时使用spark.dynamicAllocation.enabled - 使用它有哪些优缺点?我有排队提交作业。spark.dynamicAllocation.enabled如何影响作业的顺序?

  1. 上午9:30 - >作业A获取提交与dynamicAllocation启用。
  2. 上午10:30 - >作业B获得提交与dynamicAllocation启用。

注意:我的数据很大(处理将在10GB数据上进行转换)。

哪个Job对执行者分配给Job A或Job B的偏好以及Spark如何协调b/w 2应用程序?

回答

2

动态分配执行者是关于调整您的执行者池。

报价Dynamic Allocation

spark.dynamicAllocation.enabled是否使用动态资源分配,从而扩展这个应用起来工作量注册下来基于执行人的数量。

,后来在Dynamic Resource Allocation

星火提供了一种机制,动态地调整你的应用程序占用根据工作负载的资源。这意味着如果您的应用程序不再使用,并且在有需求时再次请求它们,那么您的应用程序可能会将资源返回给群集。如果多个应用程序共享Spark群集中的资源,此功能特别有用。

换句话说,作业A将通常作业B之前结束将被执行。 Spark作业是通常是顺序执行,即作业必须先完成才能启动另一个作业。

通常...

SparkContext是线程安全的,可以从星火处理应用程序的工作。这意味着你可以在同一时间或者一个接一个地提交作业,并且在某些配置中希望这两个作业可以并行运行。

报价Scheduling Within an Application

内的规定星火应用(例如SparkContext),如果他们从不同的线程提交多个并行作业可以同时运行。通过“作业”,在本节中,我们的意思是Spark操作(例如保存,收集)以及需要运行以评估该操作的任何任务。 Spark的调度程序完全是线程安全的并且支持这个用例来启用服务于多个请求的应用程序(例如,针对多个用户的查询)。

默认情况下,Spark的调度程序以FIFO方式运行作业。每个作业分为“阶段”(例如地图和缩小阶段),第一个作业获得所有可用资源的优先权,而其各个阶段有任务启动,然后第二个作业获得优先权等。

它也是可以配置作业之间的公平共享。在公平分享下,Spark以“循环”方式在作业之间分配任务,以便所有作业获得大致相等的群集资源份额。这意味着在长时间工作时提交的短工可以立即开始接收资源,并且仍然可以获得良好的响应时间,而无需等待长时间的工作。该模式最适合多用户设置。


结束语...

约伯得到的执行人分配到作业A或作业B的偏好和如何做的火花坐标的B/W 2个应用程序?

工作A.

除非已启用Fair Scheduler Pools

的公平调度器还支持分组作业到池,并设置每个池不同的调度选项(如重量)。例如,为更重要的工作创建“高优先级”池,或者将每个用户的工作组合在一起,并为用户提供相同的份额,而不管他们有多少并发作业,而不是提供作业平等份额。