【问题标题】:Dynamic Allocation for Spark StreamingSpark Streaming 的动态分配
【发布时间】:2017-05-08 15:41:36
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    因此,它们在 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-JAN-05 的评论)

    截至今天尚未记录,但我在 Spark 源代码中获得了此属性和实现。 github: ExecutorAllocationManager.scala(单元测试github: ExecutorAllocationManagerSuite.scala)类已包含在 Spark 2.0 中,而此实现在 Spark 1.6 及更低版本中不存在。

    【讨论】:

    • 感谢斯里尼瓦斯的回复。但我在 Spark 文档中没有看到“spark.streaming.dynamicAllocation.enabled”。你能把我指向你看到这个的链接吗?
    • 我正在独立运行 spark 集群,我的集群从启动所有执行程序开始,而我想以最少的执行程序启动它如何做到这一点.. 你能帮忙解决这个问题以及我提供的任何参考吗可以参考
    • 还有像“spark.dynamicAllocation.initialExecutors”这样的注释用于流式动态分配
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2020-11-14
    • 1970-01-01
    • 2018-09-26
    • 2018-09-15
    • 2016-01-04
    • 2015-09-02
    相关资源
    最近更新 更多