Apache flink Flink从一个jar运行多个作业

Apache flink Flink从一个jar运行多个作业,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我有两份工作,从卡夫卡的两个主题中读取数据。每个作业的业务逻辑不同,可以并行运行,但它们使用的是任何公共库、函数,。。。所以我在一个java项目中写了两个作业。我对上面的两项工作有任何疑问: Opt1:上传一个jar(一个主类包含两个流),然后运行一个作业 =>但通过检查点,作业1可能会影响作业2,并影响性能 Opt2:上传一个jar(2个主类对应2个流),并通过EntryClass运行2个作业: =>但是当我运行2个作业时,我捕获到一个错误org.apache.kafka.common.con

我有两份工作,从卡夫卡的两个主题中读取数据。每个作业的业务逻辑不同,可以并行运行,但它们使用的是任何公共库、函数,。。。所以我在一个java项目中写了两个作业。我对上面的两项工作有任何疑问:

Opt1:上传一个jar(一个主类包含两个流),然后运行一个作业

=>但通过检查点,作业1可能会影响作业2,并影响性能

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

=>但是当我运行2个作业时,我捕获到一个错误
org.apache.kafka.common.config.ConfigException:无效值org.apache.kafka.common.serialization.StringSerializer for configuration key.serializer:找不到类org.apache.kafka.common.serialization.StringSerializer。
如果我只运行1个作业,将不会出现错误。我认为flink在部署相同的2个文件jar时会发生冲突

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


=>我认为类似的选项2。

除非你确定自己有问题,否则越简单越好。因此,我首先将一个jar与一个工作流(您的Opt1)结合使用,只有当您遇到问题时,我才会考虑创建两个jar(每个jar都有自己的工作流),同时在集群(您的Opt3)上运行


另外,您在使用Opt2时遇到的问题听起来像是jar的打包问题。

因为我使用了检查点,如果我使用Opt1,stream1将受stream2的影响。我喜欢Opt2,但正如你所说,我的罐子似乎有包装问题。我不明白。所以你已经做了测试,发现了一个单作业方法无法解决的检查点问题?是的,有两个流和检查点的单作业会出现错误(检查点非常慢并且崩溃),因为流1的速度非常快,流2的速度较慢。流的速度不应该影响您的检查点,只影响用于状态的键空间的基数。