You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by yawning <ya...@foxmail.com> on 2023/07/13 08:54:17 UTC
一个强依赖avro的项目升级Flink1.17各种报错
用arthas查了下,和Avro相关的类都加载了两次。
比如:
sc org.apache.avro.generic.GenericData
org.apache.avro.generic.GenericData
org.apache.avro.generic.GenericData
org.apache.avro.reflect.ReflectData
org.apache.avro.specific.SpecificData
org.apache.avro.specific.SpecificData
看classloader,一个是ChildFirstClassLoader加载,另外一个是sun.misc.Launcher加载。
看路径,前者是通过
/data/disk10/hadoop/yarn/local/usercache/hive/appcache/application_ 7233_110498/tm_container_e78_1688174647233_110498_01_000003/blobStorage/job_61387d b3a053dce7791e2b848d6d9316/blob_p-774ba8661e0458392ee0cd560bab3d58baca2331-9696b4c d66b2bb15b8292bb29dcd6b2b 加载
后者是通过
/data/disk10/hadoop/yarn/local/usercache/hive/appcache/application_7233_110498/filecache/23/streaming-1.2.jar 加载
这个jar是我们打的一个shade jar,会把avro相关的依赖放进去。
最后通过设置classloader.resolve-order为parent-first解决问题。
感觉很奇怪。
提交方式为:
/data/soft/flink-1.17.1/bin/flink run-application -t yarn-application -c com.xxxx.Main streaming-1.2.jar