Spark Streaming的动态分配

时间:2016-12-22 23:02:21

标签: apache-spark spark-streaming dynamic-allocation apache-spark-2.0 apache-spark-1.6

我在我们的集群上运行了Spark Streaming作业和其他作业(Spark核心作业)。我想对这些作业使用动态资源分配,包括Spark Streaming。根据以下JIRA问题,动态分配不支持Spark Streaming(1.6.1版本)。但是在2.0.0中修复了

JIRA link

根据本期的PDF,它说应该有一个名为的配置字段 spark.streaming.dynamicAllocation.enabled=true 但是我没有在文档中看到这种配置。

任何人都可以确认,

  1. 无法在1.6.1版本中为Spark Streaming启用动态资源分配。
  2. 它是否在Spark 2.0.0中可用。如果是,应该设置什么配置 (spark.streaming.dynamicAllocation.enabled=truespark.dynamicAllocation.enabled=true

1 个答案:

答案 0 :(得分:5)

  

我可以为Spark Streaming启用动态资源分配吗?   1.6.1版本?

是的,您可以通过spark.dynamicAllocation.enabled=true为任何火花应用设置动态分配来启用 但我在流媒体应用程序方面遇到的问题很少(在JIRA中提到)

  1. 您的执行者可能永远不会闲置,因为他们每N秒运行一次
  2. 你应该至少有一个接收器一直在运行
  3. 现有的启发式算法不考虑批处理队列的长度
  4. 因此,他们在Spark 2.0中添加了新属性(spark.streaming.dynamicAllocation.enabled),仅用于流媒体应用程序。

      

    它是否在Spark 2.0.0中可用。如果是,应该是什么配置   设置spark.streaming.dynamicAllocation.enabled或   spark.dynamicAllocation.enabled?

    如果应用程序是流式传输,则必须为spark.streaming.dynamicAllocation.enabled,否则请使用spark.dynamicAllocation.enabled

    修改(根据2017年1月5日的评论)

    今天没有记录,但我在Spark源代码中获得了这个属性和实现。 ExecutorAllocationManager.scala(单元测试ExecutorAllocationManagerSuite.scala)类已包含在Spark 2.0中,并且此实现在Spark 1.6及更低版本中不存在。