我正在决定使用Spark-Streaming Kafka集成。
我有一个Kafka主题(我可以分成几个主题)每分钟排队几十万条消息,我的火花流应用程序通过应用转换来摄取消息,然后更新UI。
知道在Kafka中处理所有故障并复制数据,实现Spark Streaming应用程序以获得最佳性能和稳健性的最佳选择是什么:
我很想去寻找第二种选择,但我找不到人们在谈论这样的解决方案。
答案 0 :(得分:2)
在这种情况下要考虑的一个重要因素是主题的分区。
Kafka-Spark集成的并行度级别将由主题的分区数决定。直接Kafka模型通过在主题的分区数和相应Spark作业的RDD分区之间建立1:1映射来简化消费模型。
因此,建议的设置是:一个带有n个分区的Kafka主题(其中n是针对您的用例调整的)和一个具有足够资源的Spark群集,以并行处理来自这些分区的数据。
选项#2感觉就像尝试重新实现Spark为您提供的开箱即用:Spark为您提供弹性分布式计算。选项#2试图在多台机器上并行化有效负载,并通过拥有独立的执行程序来处理故障。您可以通过单个Spark群集实现这一目标,从而提高资源利用率并实现单一部署。
答案 1 :(得分:1)
选项1是直接的,简单的,可能更有效。如果您的要求得到满足,那就是要求(并遵守KISS原则)。