gpt4 book ai didi

apache-kafka - flink kafka source 中的并行性不会导致任何执行

转载 作者:行者123 更新时间:2023-12-05 04:41:25 24 4
gpt4 key购买 nike

我是kafka初学者和flink爱好者。我注意到了一些令人不安的事情。当我将 kafka 作业的并行度增加到超过 1 时,我没有窗口来执行它们的进程。我希望使用并行来提高分析速度。

查看来自 Apache Flink Web Dashboard 的图像示例,其中可视化了该问题。这是完全相同的代码和完全相同的摄取数据集,不同之处在于仅并行性。在第一个示例中,摄取的数据流经窗口函数,但是当并行性增加时,数据只是堆积在第一个永远不会执行的窗口函数中。它永远保持这样,永远不会产生任何错误。

Parallelism 1, everything flows fine, output from window 1 is sent to window 2 image

Parallelism 10, everything stops at the first window image

代码中使用的源是 KafkaSource,FlinkKafkaConsumer 似乎可以在相同的设置下正常工作,但已被弃用,所以我不希望使用它。

感谢任何想法!

最佳答案

问题(几乎可以肯定)正在使用的 Kafka 主题的分区数少于配置的并行度。新的 KafkaSource 处理这种情况的方式与 FlinkKafkaConsumer 不同。

事件时间窗口等待水印的到来,指示流现在通过窗口的结束时间完成。当您的 KafkaSource 运算符有 10 个实例时,其中一些实例未接收任何数据,这些空闲实例会阻止水印。基本上,Flink 不知道这些实例永远不会产生数据——而是等待它们被分配工作要做。

您可以通过执行以下操作之一解决此问题:

  • 将 Flink 的并行度降低到小于或等于 Kafka 分区的数量。
  • 将您的 WatermarkStrategy 配置为使用 withIdleness(duration),这样空闲的实例就会意识到它们没有做任何事情,并且(暂时)将它们自己从参与中移除带水印。 (如果这些实例曾被分配要使用的拆分/分区,它们将继续添加水印。)

关于apache-kafka - flink kafka source 中的并行性不会导致任何执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70096166/

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