前言
最近遇到一个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
原因分析
- 很多解决方案,包括官方文档提供的,都是在conf/flink-conf.yaml里指定jdk路径
env.java.home: /data/jdk1.8.0_202
- 然而会发现报错依旧,查看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.youkuaiyun.com/huang_rx/article/details/106788324