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.getSerializableListState(Ljava/lang/String;)
主要原因是版本不一致造成的,pom.xml文件中添加了scala 2.11的依赖包,集群环境是2.12版本,所以导致执行失败。
3. No ExecutorFactory found to execute the application本地调试的时候,出现该错误,缺少依赖。
4. 可以打包在集群环境运行的参考pom.xml1.14.3 org.apache.flink flink-clients_2.12${flink.version}
4.0.0 org.example flink-shopstatis-demo1.0 8 8 1.14.3 2.12 provided org.apache.flink flink-java${flink.version} ${project.build.scope} org.apache.flink flink-streaming-java_${scala.version}${flink.version} ${project.build.scope} org.apache.flink flink-connector-kafka_2.121.14.3 org.apache.flink flink-core1.14.3 ${project.build.scope} org.apache.flink flink-clients_2.12${flink.version} org.apache.maven.plugins maven-compiler-plugin3.6.0 1.8 1.8 UTF-8 org.apache.maven.plugins maven-assembly-plugin3.3.0 jar-with-dependencies statis.ShopDayGMVStatis make-assembly package single
打包时,对于集群环境中已经存在的jar,打包时采用provided,避免冲突。



