flink程序在开发环境已经运行成功的情况下,部署到独立的flink集群(start-cluster)中,可能遇到不能正常运行的情况。
1. org.apache.flink.runtime.JobException: Recovery is suppressed by NoRestartBackoffTimeStrategy
没有指定重启策略,在本地部署时,不需要指定重启策略。
可以通过下面的代码指定重启策略
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(
3, // 尝试重启的次数
Time.of(10, TimeUnit.SECONDS) // 间隔
));
失败率重启
val env = ExecutionEnvironment.getExecutionEnvironment()
env.setRestartStrategy(RestartStrategies.failureRateRestart(
3, // 一个时间段内的最大失败次数
Time.of(5, TimeUnit.MINUTES), // 衡量失败次数的是时间段
Time.of(10, TimeUnit.SECONDS) // 间隔
))
不重启
val env = ExecutionEnvironment.getExecutionEnvironment()
env.setRestartStrategy(RestartStrategies.noRestart())
2. getSerializableListState(Ljava/lang/String;)
在本地调试正常,上传到集群环境出现该错误提示:
org.apache.flink.api.common.state.OperatorStateStore.getSe

本文总结了将Flink程序从开发环境迁移到独立集群时可能遇到的问题及其解决方案。包括:1) 指定重启策略以应对JobException,例如使用固定延迟重启或失败率重启策略;2) 注意版本一致性,确保集群环境与开发环境的Scala版本匹配;3) 确保所有必要的依赖已添加,如flink-clients_2.12;4) 提供了一个示例pom.xml配置,强调了在打包时使用provided范围避免依赖冲突。遵循这些策略可帮助Flink程序在集群环境中顺利运行。
2727

被折叠的 条评论
为什么被折叠?



