gpt4 book ai didi

apache-spark - 适用于 1000 多个主题的 Spark Streaming 设计

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

我必须设计一个具有以下用例的 Spark 流应用程序。我正在为此寻找最好的方法。

我的应用程序将数据推送到 1000 多个不同的主题,每个主题都有不同的目的。 Spark Streaming将从每个主题接收数据,处理后将写回相应的另一个主题。

Ex. 

Input Type 1 Topic --> Spark Streaming --> Output Type 1 Topic
Input Type 2 Topic --> Spark Streaming --> Output Type 2 Topic
Input Type 3 Topic --> Spark Streaming --> Output Type 3 Topic
.
.
.
Input Type N Topic --> Spark Streaming --> Output Type N Topic and so on.

我需要回答以下问题。

  1. 每个主题启动 1000 多个 Spark 流应用程序是个好主意吗?或者我应该为所有主题创建一个流应用程序,因为处理逻辑将相同?
  2. 如果是一个流上下文,那么我如何确定哪个RDD属于哪个Kafka主题,以便在处理后我可以将其写回其对应的OUTPUT主题?
  3. 客户端可以从Kafka添加/删除主题,在Spark Streaming中如何动态处理?
  4. 如何在失败时自动重新启 Action 业?

你们在这里还看到其他问题吗?

非常感谢您的回复。

最佳答案

  1. 想象一下部署或升级每个应用程序时,1000 个不同的 Spark 应用程序将无法维护。

您必须使用recommended "Direct approach"而不是 Receiver 方法,否则您的应用程序将使用超过 1000 个核心,如果您没有更多核心,它将能够从 Kafka 主题接收数据,但无法处理它们。来自 Spark Streaming Doc :

Note that, if you want to receive multiple streams of data in parallel in your streaming application, you can create multiple input DStreams (discussed further in the Performance Tuning section). This will create multiple receivers which will simultaneously receive multiple data streams. But note that a Spark worker/executor is a long-running task, hence it occupies one of the cores allocated to the Spark Streaming application.

  • 您可以看到in the Kafka Integration (有一个用于 Kafka 0.8 和一个用于 0.10)文档如何查看哪个主题属于消息

  • 如果客户端添加新主题或分区,您将需要更新 Spark Streaming 的主题conf,并重新部署它。如果您使用 Kafka 0.10,您还可以使用 RegEx 作为主题名称,请参阅 Consumer Strategies 。我在 Kafka 0.8 中经历过读取删除的主题,没有任何问题,仍然验证(“信任,但验证”)

  • 参见Spark Streaming's doc about Fault Tolerance ,在将应用程序提交到集群时也可以使用模式 --supervise,请参阅 the Deploying documentation了解更多信息

  • 为了实现一次语义,我建议 Spark Streaming 的主要提交者使用这个 Github:https://github.com/koeninger/kafka-exactly-once

    奖励,类似的 StackOverFlow 帖子:Spark: processing multiple kafka topic in parallel

    Bonus2:留意即将发布的 Spark 2.2 和Structured Streaming 组件

    关于apache-spark - 适用于 1000 多个主题的 Spark Streaming 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44530545/

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