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