首页 > 解决方案 > Flink 从单个 jar 运行多个作业

问题描述

我有 2 个工作从 Kafka 中的 2 个主题读取数据。每个作业的业务逻辑都不同,可以并行运行,但它们使用任何常见的库、函数……所以我在一个项目 java 中编写了 2 个作业。我有任何问题要运行以上 2 个工作:

Opt1:上传一个jar(1个主类包括2个流),并运行1个作业。

=> 但是使用检查点,作业 1 可能会影响作业 2 并影响性能。

Opt2:上传一个jar(2个主类对应2个流)并通过EntryClass运行2个作业:

=> 但是当我运行 2 个作业时,我发现了一个错误org.apache.kafka.common.config.ConfigException: Invalid value org.apache.kafka.common.serialization.StringSerializer for configuration key.serializer: Class org.apache.kafka.common.serialization.StringSerializer could not be found.如果我只运行 1 个作业,则不会出现错误。我认为部署相同的 2 个文件 jar 时会发生 flink 冲突。

Opt3:每个作业构建一个 jar 并运行对应于 2 个 jar 的 2 个作业:

=> 我认为类似 Opt2。

标签: apache-flinkflink-streaming

解决方案


在您确定自己遇到问题之前,越简单越好。因此,我首先将一个 jar 与一个工作流程(您的 Opt1)一起使用,并且只有当您遇到问题时,我才会考虑创建两个您在集群(您的 Opt3)上同时运行的 jar(每个都有自己的工作流程) .

顺便说一句,您遇到的 Opt2 问题听起来像是 jar 的包装问题。


推荐阅读