gpt4 book ai didi

job-scheduling - Spark Streaming 中的作业是如何分配给执行者的?

转载 作者:行者123 更新时间:2023-12-03 20:03:55 25 4
gpt4 key购买 nike

假设我在 Spark Streaming 应用程序中有 2 个或更多执行程序。

我将批处理时间设置为 10 秒,因此每 10 秒启动一个作业,从我的 HDFS 读取输入。

如果每个作业的持续时间超过 10 秒,那么启动的新作业会分配给一个空闲的执行器,对吗?

即使上一个没有完成?

我知道这似乎是一个显而易见的答案,但我在网站或与 Spark Streaming 相关的论文上没有找到任何关于作业调度的信息。

如果您知道一些解释所有这些内容的链接,我将非常感激看到它们。

谢谢你。

最佳答案

实际上,在 Spark Streaming 的当前实现和默认配置下,在任何时间点只有作业处于事件状态(即正在执行中)。因此,如果一个批处理的处理时间超过 10 秒,那么下一批的作业将保持排队。

这可以通过实验性 Spark 属性“spark.streaming.concurrentJobs”进行更改,默认设置为 1。它目前没有记录(也许我应该添加它)。

将其设置为 1 的原因是并发作业可能会导致奇怪的资源共享,这会使调试系统中是否有足够的资源足够快地处理摄取的数据变得困难。一次只运行一个作业,很容易看出如果批处理时间<批处理间隔,那么系统将是稳定的。诚然,在某些条件下,这可能不是最有效的资源利用方式。我们绝对希望在 future 改善这一点。

在这个 meetup 中有一些关于 Spark Streaming 内部的 Material 。幻灯片(对不起,关于无耻的自我广告:))。这可能对你有用。

关于job-scheduling - Spark Streaming 中的作业是如何分配给执行者的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23528006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com