7

我有一个 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
4

1 回答 1

9

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

是的,您可以通过为任何 spark 应用程序设置动态分配来启用spark.dynamicAllocation.enabled=true 但我对流应用程序几乎没有问题(在SPARK-12133中提到)

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

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

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

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

编辑:(根据 2017-JAN-05 的评论)

到目前为止,这还没有记录,但是我在 Spark 源代码中获得了这个属性和实现。github:(ExecutorAllocationManager.scala单元测试github:)ExecutorAllocationManagerSuite.scala类已包含在 Spark 2.0 中,而 Spark 1.6 及更低版本中没有此实现。

于 2016-12-23T03:23:02.457 回答