我从.jar文件运行多个作业。我想在工作之间共享状态。但是所有输入在每个作业中都消耗(来自kafka)并生成重复的输出。我看到我的flink面板。 “记录发送”的所有工作都是3。我认为必须将数字分割为我的工作。
我使用此命令创建作业
bin/flink run app.jar
我该如何解决?
由于专注于可伸缩性和高性能,因此Flink状态是本地的。 Flink并没有真正提供作业之间共享状态的机制。
但是,Flink确实支持将大量工作分配给一群工人。 Flink群集能够使用一个或多个多核CPU的资源并行运行单个作业。一些Flink作业正在数千个内核上运行,只是为了了解其可伸缩性。
与Kafka一起使用时,每个Kafka分区都可以由Flink中的另一个子任务读取,并由其自己的管道并行实例处理。
您可能首先通过运行作业的一个并行实例开始
bin/flink run --parallelism <parallelism> app.jar
要成功实现,您的集群必须至少具有与您要求的并行度一样多的可用插槽。并行度应小于或等于正在使用的Kafka主题中的分区数。 Flink Kafka使用者将在彼此之间进行协调-他们每个人都从一个或多个分区读取。