Spark流的动态分配

Akh*_*ala 6 dynamic-allocation apache-spark spark-streaming apache-spark-1.6 apache-spark-2.0

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

JIRA链接

根据本期的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

mrs*_*vas 6

是否可以为1.6.1版的Spark Streaming启用动态资源分配?

是的,您可以通过以下方式设置对任何spark应用程序的动态分配来启用该功能,spark.dynamicAllocation.enabled=true 但是流应用程序(JIRA中提到)的问题很少

  1. 您的执行器可能永远不会闲着,因为他们每N秒运行一次
  2. 您应该至少有一个始终在运行的接收器
  3. 现有的启发式方法没有考虑批处理队列的长度

因此,它们spark.streaming.dynamicAllocation.enabled在Spark 2.0 中添加了仅用于流式应用程序的新property()。

它在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及以下版本中不存在。