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 ℡小新的蜡笔不见嘞、 <15...@qq.com.INVALID> on 2024/07/18 10:30:40 UTC
flink 任务运行抛ClassNotFoundException
请问,Flink 任务运行期间 偶尔会抛出 ClassNotFoundException 异常,这个一般是什么原因,以及怎么解决呢?信息如下:
* 这个类确实存在于 任务Jar 里面
* 这个类是经过 shade 后的,因为 Flink 集群里面集成了这个依赖,所以需要将相关的类经过shade 处理
* 这个问题偶尔出现,出现后可能会导致任务重启,并且重启后,任务可能恢复正常也可能继续因为这种异常继续失败
* 当前集群是 session standalone 方式的
* child first / parent first 方式都试过后,还是有这个问题
异常栈如下(JM节点):
Caused by: java.lang.ClassNotFoundException: org.apache.hudi.com.xx.xx.xxx.A
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at org.apache.flink.util.FlinkUserCodeClassLoader.loadClassWithoutExceptionHandling(FlinkUserCodeClassLoader.java:97)
at org.apache.flink.util.ParentFirstClassLoader.loadClassWithoutExceptionHandling(ParentFirstClassLoader.java:65)
at org.apache.flink.util.FlinkUserCodeClassLoader.loadClass(FlinkUserCodeClassLoader.java:81)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 59 more
感谢大家
Re: flink 任务运行抛ClassNotFoundException
Posted by Yanquan Lv <de...@gmail.com>.
你好,
假设 xxx.shade. 是你用于 shade 的前缀。
grep -rn 'org.apache.hudi.com.xx.xx.xxx.A' 和grep -rn
'xxx.shade.org.apache.hudi.com.xx.xx.xxx.A' 出来的结果一致吗?
℡小新的蜡笔不见嘞、 <15...@qq.com.invalid> 于2024年7月18日周四 20:14写道:
> 您好,感谢您的回复。
> 我理解应该是都做了 shade 处理,我这边用了您的 grep -rn 命令查看了下没问题。而且,这个
> 'org.apache.hudi.com.xx.xx.xxx.A' 在我的任务 jar 里面确实是存在的
>
>
>
>
> ------------------ 原始邮件 ------------------
> 发件人:
> "user-zh"
> <
> decq12ybhl@gmail.com>;
> 发送时间: 2024年7月18日(星期四) 晚上7:55
> 收件人: "user-zh"<user-zh@flink.apache.org>;
>
> 主题: Re: flink 任务运行抛ClassNotFoundException
>
>
>
> 你好,这个类被 shade 了,但是调用这个类的其他类可能在不同的 jar 包,没有都被 shade 处理。可以 grep -rn
> 'org.apache.hudi.com.xx.xx.xxx.A' 看看所有调用这个类的包是不是都做了 shade 处理。
>
> ℡小新的蜡笔不见嘞、 <1515827454@qq.com.invalid> 于2024年7月18日周四 18:31写道:
>
> > 请问,Flink 任务运行期间 偶尔会抛出 ClassNotFoundException
> 异常,这个一般是什么原因,以及怎么解决呢?信息如下:
> > * 这个类确实存在于 任务Jar 里面
> > * 这个类是经过 shade 后的,因为 Flink 集群里面集成了这个依赖,所以需要将相关的类经过shade 处理
> > * 这个问题偶尔出现,出现后可能会导致任务重启,并且重启后,任务可能恢复正常也可能继续因为这种异常继续失败
> > * 当前集群是 session standalone 方式的
> > * child first / parent first 方式都试过后,还是有这个问题
> >
> >
> > 异常栈如下(JM节点):
> > Caused by: java.lang.ClassNotFoundException:
> > org.apache.hudi.com.xx.xx.xxx.A
> > at
> java.net.URLClassLoader.findClass(URLClassLoader.java:382)
> > at
> java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> > at
> >
> org.apache.flink.util.FlinkUserCodeClassLoader.loadClassWithoutExceptionHandling(FlinkUserCodeClassLoader.java:97)
> > at
> >
> org.apache.flink.util.ParentFirstClassLoader.loadClassWithoutExceptionHandling(ParentFirstClassLoader.java:65)
> > at
> >
> org.apache.flink.util.FlinkUserCodeClassLoader.loadClass(FlinkUserCodeClassLoader.java:81)
> > at
> java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> > ... 59 more
> >
> >
> >
> > 感谢大家
回复: flink 任务运行抛ClassNotFoundException
Posted by ℡小新的蜡笔不见嘞、 <15...@qq.com.INVALID>.
您好,感谢您的回复。
我理解应该是都做了 shade 处理,我这边用了您的 grep -rn 命令查看了下没问题。而且,这个 'org.apache.hudi.com.xx.xx.xxx.A' 在我的任务 jar 里面确实是存在的
------------------ 原始邮件 ------------------
发件人: "user-zh" <decq12ybhl@gmail.com>;
发送时间: 2024年7月18日(星期四) 晚上7:55
收件人: "user-zh"<user-zh@flink.apache.org>;
主题: Re: flink 任务运行抛ClassNotFoundException
你好,这个类被 shade 了,但是调用这个类的其他类可能在不同的 jar 包,没有都被 shade 处理。可以 grep -rn
'org.apache.hudi.com.xx.xx.xxx.A' 看看所有调用这个类的包是不是都做了 shade 处理。
℡小新的蜡笔不见嘞、 <1515827454@qq.com.invalid> 于2024年7月18日周四 18:31写道:
> 请问,Flink 任务运行期间 偶尔会抛出 ClassNotFoundException 异常,这个一般是什么原因,以及怎么解决呢?信息如下:
> * 这个类确实存在于 任务Jar 里面
> * 这个类是经过 shade 后的,因为 Flink 集群里面集成了这个依赖,所以需要将相关的类经过shade 处理
> * 这个问题偶尔出现,出现后可能会导致任务重启,并且重启后,任务可能恢复正常也可能继续因为这种异常继续失败
> * 当前集群是 session standalone 方式的
> * child first / parent first 方式都试过后,还是有这个问题
>
>
> 异常栈如下(JM节点):
> Caused by: java.lang.ClassNotFoundException:
> org.apache.hudi.com.xx.xx.xxx.A
> at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> at
> org.apache.flink.util.FlinkUserCodeClassLoader.loadClassWithoutExceptionHandling(FlinkUserCodeClassLoader.java:97)
> at
> org.apache.flink.util.ParentFirstClassLoader.loadClassWithoutExceptionHandling(ParentFirstClassLoader.java:65)
> at
> org.apache.flink.util.FlinkUserCodeClassLoader.loadClass(FlinkUserCodeClassLoader.java:81)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> ... 59 more
>
>
>
> 感谢大家
Re: flink 任务运行抛ClassNotFoundException
Posted by Yanquan Lv <de...@gmail.com>.
你好,这个类被 shade 了,但是调用这个类的其他类可能在不同的 jar 包,没有都被 shade 处理。可以 grep -rn
'org.apache.hudi.com.xx.xx.xxx.A' 看看所有调用这个类的包是不是都做了 shade 处理。
℡小新的蜡笔不见嘞、 <15...@qq.com.invalid> 于2024年7月18日周四 18:31写道:
> 请问,Flink 任务运行期间 偶尔会抛出 ClassNotFoundException 异常,这个一般是什么原因,以及怎么解决呢?信息如下:
> * 这个类确实存在于 任务Jar 里面
> * 这个类是经过 shade 后的,因为 Flink 集群里面集成了这个依赖,所以需要将相关的类经过shade 处理
> * 这个问题偶尔出现,出现后可能会导致任务重启,并且重启后,任务可能恢复正常也可能继续因为这种异常继续失败
> * 当前集群是 session standalone 方式的
> * child first / parent first 方式都试过后,还是有这个问题
>
>
> 异常栈如下(JM节点):
> Caused by: java.lang.ClassNotFoundException:
> org.apache.hudi.com.xx.xx.xxx.A
> at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> at
> org.apache.flink.util.FlinkUserCodeClassLoader.loadClassWithoutExceptionHandling(FlinkUserCodeClassLoader.java:97)
> at
> org.apache.flink.util.ParentFirstClassLoader.loadClassWithoutExceptionHandling(ParentFirstClassLoader.java:65)
> at
> org.apache.flink.util.FlinkUserCodeClassLoader.loadClass(FlinkUserCodeClassLoader.java:81)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> ... 59 more
>
>
>
> 感谢大家