flink1.16.1提交任务到yarn集群遇到jdk版本较低的解决方案

前言

最近遇到一个yarn集群jdk版本较低,而flink 1.16版本官方要求是8 or 11,奈何yarn集群jdk虽然也是8,但是是早期较早版本,会遇到问题,具体报错如下:

ERROR org.apache.flink.runtime.util.EnvironmentInformation [] - The file .flink-runtime.version.properties has not been generated correctly. You MUST run ‘mvn generate-sources’ in the flink-runtime module. : java.time.format.DateTimeParseException: Text ‘1970-01-01T00:00:00+0000’ could not be parsed: Unable to obtain Instant from TemporalAccessor: {OffsetSeconds=0},ISO resolved to 1970-01-01T00:00 of type java.time.format.Parsed

原因分析

  1. 很多解决方案,包括官方文档提供的,都是在conf/flink-conf.yaml里指定jdk路径

env.java.home: /data/jdk1.8.0_202

  1. 然而会发现报错依旧,查看yarn任务日志发现,虽然flink的配置文件设置了jdk版本,但是最后任务提交到yarn集群初始化container的时候,container是用的集群本身的jdk版本。简而言之,之前在conf/flink-conf.yaml设置jdk版本相当于白做了。

别问为啥不能升级yarn集群jdk版本,问就是白问。大家都懂的(哭了~~~)

解决方案

1.在conf/flink-conf.yaml需要加三行配置。

env.java.home: /data/jdk1.8.0_202
containerized.master.env.JAVA_HOME: /data/jdk1.8.0_202
containerized.taskmanager.env.JAVA_HOME: /data/jdk1.8.0_202

找了好久才找到这么一个解决方案,特此记录一下。

参考文章:

原文链接:
https://blog.csdn.net/huang_rx/article/details/106788324

你可能感兴趣的:(java,flink)