我们正在使用Flink 1.2.1,并且我们从一个kafka流中消耗了一个kafka流,通过一个流到另一个流到另一个流并处理联合流。例如stream1.union(stream2)但是,Stream2的体积比Stream1的数量高100倍以上,并且我们正在经历的是,Stream2的消耗滞后滞后(超过3天的数据),但在Stream1中却很少。我们已经有9个分区,但是1作为并行性,可以增加副主义可以解决流的消耗滞后,否则我们根本不应该在这种情况下进行联合。
.union()
不应导致时间滞后,afaik。
是的,增加的并行性应该有所帮助,如果处理滞后是由于您的消费操作员(或下沉)受到CPU的约束。
如果问题是在水槽端的某些东西上无法通过更高的并行性帮助的东西(例如,您正在写入db,并且以最大的摄入率),那么增加水槽并行性无济于事,当然。
是的,尝试增加stream2源的并行性 - 它应该有所帮助: env.addSource(kafkaStream2Consumer).setParallelism(9)
目前,您拥有1个核心的瓶颈,需要跟上消耗stream2数据。为了完全利用Kafka的并行性,Flinkkafkaconsumer并行性应为> =它正在消耗的主题分区数。