Spark Streaming 的动态分配
Posted
技术标签:
【中文标题】Spark Streaming 的动态分配【英文标题】:Dynamic Allocation for Spark 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.6.1 版本中为 Spark Streaming 启用动态资源分配。
在 Spark 2.0.0 中是否可用。如果是,应该设置什么配置
(
spark.streaming.dynamicAllocation.enabled=true
或 spark.dynamicAllocation.enabled=true
)
【问题讨论】:
【参考方案1】:我可以为 Spark Streaming 启用动态资源分配吗? 1.6.1版本?
是的,您可以通过使用spark.dynamicAllocation.enabled=true
为任何 Spark 应用程序设置动态分配来启用
但我对流式应用程序有一些问题(在SPARK-12133 中提到)
-
您的执行程序可能永远不会空闲,因为它们每 N 秒运行一次
您应该至少有一个接收器始终运行
现有的启发式方法没有考虑批处理队列的长度
因此,它们在 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”这样的注释用于流式动态分配以上是关于Spark Streaming 的动态分配的主要内容,如果未能解决你的问题,请参考以下文章
Spark Streaming资源动态申请和动态控制消费速率剖析
第17课:Spark Streaming资源动态申请和动态控制消费速率原理剖析
(版本定制)第17课:Spark Streaming资源动态申请和动态控制消费速率原理剖析
Spark Streaming资源动态申请和动态控制消费速率原理剖析