我如何在我的 flink 作业之间共享状态?

How can i share state between my flink jobs?

我 运行 我的 .jar 文件中的多个作业。我想在我的工作之间共享状态。但所有输入在每个作业中都消耗(来自 kafka)并生成重复输出。 我看到了我的 flink 面板。所有工作 'record sents' 是 3。我认为必须将数字分配给我的工作。

我用这个命令创建作业

bin/flink run app.jar

我该如何解决?

由于Flink state 是本地化的,因为它注重可扩展性和高性能。 Flink 并没有真正提供在作业之间共享状态的机制。

但是,Flink 确实支持在一组 worker 中拆分大型作业。 Flink 集群能够使用一个或多个多核 CPU 的资源并行 运行 一个作业。一些 Flink 作业 运行 在数千个内核上运行,只是为了了解其可扩展性。

与 Kafka 一起使用时,每个 Kafka 分区都可以由 Flink 中的不同子任务读取,并由其自己的管道并行实例处理。

您可以先通过运行通过

为您的作业创建一个并行实例

bin/flink run --parallelism <parallelism> app.jar

要成功,您的集群必须至少有与您请求的并行度一样多的空闲槽。并行度应小于或等于正在使用的 Kafka 主题中的分区数。 Flink Kafka 消费者将相互协调——他们每个人都从一个或多个分区读取数据。