Apache spark 1000+的火花流式设计;话题

Apache spark 1000+的火花流式设计;话题,apache-spark,spark-streaming,spark-dataframe,Apache Spark,Spark Streaming,Spark Dataframe,我必须用下面的用例设计一个spark流媒体应用程序。我正在寻找最好的方法 我有一个应用程序,它将数据推送到1000多个不同的主题中,每个主题都有不同的目的。Spark streaming将从每个主题接收数据,并在处理后将其写回相应的另一个主题 Ex. Input Type 1 Topic --> Spark Streaming --> Output Type 1 Topic Input Type 2 Topic --> Spark Streaming --> O

我必须用下面的用例设计一个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.
我需要回答以下问题

  • 每个主题启动1000多个spark流媒体应用程序是一个好主意吗?或者我应该为所有主题提供一个流媒体应用程序,因为处理逻辑将是相同的
  • 如果是一个流上下文,那么我将如何确定哪个RDD属于哪个卡夫卡主题,以便在处理后可以将其写回相应的输出主题
  • 客户端可以从Kafka添加/删除主题,如何在Spark流媒体中动态处理
  • 如何在出现故障时自动重新启动作业
  • 你们这里还有其他问题吗

    高度赞赏你的反应

  • 1000个不同的Spark应用程序将不可维护,想象一下部署或升级每个应用程序
  • 您必须使用而不是接收器方法,否则您的应用程序将使用超过1000个内核,如果您没有更多内核,它将能够从您的卡夫卡主题接收数据,但不能处理它们。发件人:

    请注意,如果希望在流应用程序中并行接收多个数据流,则可以创建多个输入数据流(在“性能调优”一节中进一步讨论)。这将创建同时接收多个数据流的多个接收器。但是请注意,Spark worker/executor是一个长期运行的任务,因此它占用分配给Spark流应用程序的一个核心

  • 您可以查看(Kafka 0.8和0.10各有一个)doc如何查看消息属于哪个主题

  • 如果客户端添加新主题或分区,则需要更新Spark Streaming的主题配置并重新部署。如果使用Kafka 0.10,还可以使用正则表达式作为主题名称,请参阅。我曾经阅读过卡夫卡0.8中删除的主题,没有问题,仍然验证(“信任,但验证”)

  • 请参阅,在将应用程序提交到集群时也使用模式
    --supervise
    ,有关更多信息,请参阅

  • 为了实现一次语义,我建议使用Spark Streaming的主要提交者提供的Github:

    奖金,良好的类似StackOverFlow post:

    Bonus2:注意即将发布的Spark 2.2和结构化的流媒体组件

  • 1000个不同的Spark应用程序将不可维护,想象一下部署或升级每个应用程序
  • 您必须使用而不是接收器方法,否则您的应用程序将使用超过1000个内核,如果您没有更多内核,它将能够从您的卡夫卡主题接收数据,但不能处理它们。发件人:

    请注意,如果希望在流应用程序中并行接收多个数据流,则可以创建多个输入数据流(在“性能调优”一节中进一步讨论)。这将创建同时接收多个数据流的多个接收器。但是请注意,Spark worker/executor是一个长期运行的任务,因此它占用分配给Spark流应用程序的一个核心

  • 您可以查看(Kafka 0.8和0.10各有一个)doc如何查看消息属于哪个主题

  • 如果客户端添加新主题或分区,则需要更新Spark Streaming的主题配置并重新部署。如果使用Kafka 0.10,还可以使用正则表达式作为主题名称,请参阅。我曾经阅读过卡夫卡0.8中删除的主题,没有问题,仍然验证(“信任,但验证”)

  • 请参阅,在将应用程序提交到集群时也使用模式
    --supervise
    ,有关更多信息,请参阅

  • 为了实现一次语义,我建议使用Spark Streaming的主要提交者提供的Github:

    奖金,良好的类似StackOverFlow post:


    Bonus2:请注意即将发布的Spark 2.2和结构化的流媒体组件

    我认为您应该查看Kafka流以了解此类用例。我认为你应该看看卡夫卡流的这种用例。谢谢关于使用spark阅读平行主题,您是否建议可以配置任何优化?理想情况下,在生产集群中,我们应该发布多少spark streaming应用程序?关于Kafka的消费者,我建议您使用这些幻灯片,并确保在您的办公室打印最后一张幻灯片:)我无法告诉您集群的spark应用程序的数量,这取决于您集群的容量。关于使用spark阅读平行主题,您是否建议可以配置任何优化?理想情况下,在生产集群中,我们应该发布多少spark streaming应用程序?关于Kafka的消费者,我建议您使用这些幻灯片,并确保在您的办公室打印最后一张幻灯片:)我无法告诉您集群的spark应用程序的数量,这取决于您的集群容量