【问题标题】:Spark Streaming Design for 1000+ topics针对 1000 多个主题的 Spark Streaming 设计
【发布时间】:2017-11-15 18:23:07
【问题描述】:

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

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

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 topic,以便处理后可以写回对应的OUTPUT Topic?
  3. 客户端可以从 Kafka 中添加/删除主题,如何在 Spark 流中动态处理?
  4. 如何在失败时自动重启作业?

你们看到这里还有什么问题吗?

非常感谢您的回复。

【问题讨论】:

标签: apache-spark spark-streaming spark-dataframe


【解决方案1】:
  1. 1000 个不同的 Spark 应用程序将无法维护,想象一下部署或升级每个应用程序。

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

请注意,如果您想在流应用程序中并行接收多个数据流,您可以创建多个输入 DStream(在性能调优部分进一步讨论)。这将创建多个接收器,它们将同时接收多个数据流。但请注意,Spark worker/executor 是一项长时间运行的任务,因此它占用了分配给 Spark Streaming 应用程序的核心之一。

  1. 您可以查看in the Kafka Integration(Kafka 0.8 一个,0.10 一个)文档如何查看消息属于哪个主题 p>

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

  3. 参见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 和 结构化流组件

【讨论】:

  • 谢谢。关于使用 spark 阅读并行主题,您是否建议可以配置任何优化?理想情况下,在生产集群中,我们应该启动多少个 Spark 流应用程序?
  • 关于 Kafka 的消费者,我会推荐这些幻灯片,并且一定要把最后一张幻灯片打印在你的办公室里 :) fr.slideshare.net/ConfluentInc/… 我不能告诉你一个数字的 spark 应用程序的数量集群,这取决于集群的容量
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2018-07-15
  • 2019-07-12
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
相关资源
最近更新 更多