Flink中的类加载机制
Flink中的类加载机制
Flink中的类加载配置项
Flink中关于类加载有以下配置选项
| 配置项 | 默认值 | 说明 |
|---|---|---|
| classloader.resolve-order | “child-first” | 类加载顺序。child-first优先从Flink任务(jar包)中加载类,parent-first优先从Flink集群加载类。 |
| classloader.parent-first-patterns.default | “java.; scala.; org.apache.flink.; com.esotericsoftware.kryo; org.apache.hadoop.;javax.annotation.; org.slf4j;org.apache.log4j; org.apache.logging; org.apache.commons.logging; ch.qos.logback; org.xml; javax.xml; org.apache.xerces; org.w3c” | 优先从Flink集群加载的类,以分号分隔的类前缀匹配 |
| classloader.parent-first-patterns.additional | (none) | 额外需要优先从Flink集群加载的类 |
| classloader.fail-on-metaspace-oom-error | true | 如果尝试加载用户代码类时抛出“OutOfMemoryError:Metaspace”,则Flink JVM进程失败。 |
类图关系

FlinkUserCodeClassLoader是一个继承了URLClassLoader的抽象类,主要是约束了其子类加载器在进行类加载的一些行为。
/**
* This class loader accepts a custom handler if an exception occurs in {@link #loadClass(String, boolean)}.
*/
public abstract class FlinkUserCodeClassLoader extends URLClassLoader {
// 加载类出现异常时的handler,默认不作处理
public static final Consumer<Throwable> NOOP_EXCEPTION_HANDLER = classLoadingException -> {
};
// 指定一个类加载异常处理handler
private final Consumer<Throwable> classLoadingExceptionHandler;
protected FlinkUserCodeClassLoader(URL[] urls, ClassLoader parent) {
this(urls, parent, NOOP_EXCEPTION_HANDLER);
}
protected FlinkUserCodeClassLoader(
URL[] urls,
ClassLoader parent,
Consumer<Throwable> classLoadingExceptionHandler) {
super(urls, parent);
this.classLoadingExceptionHandler = classLoadingExceptionHandler;

最低0.47元/天 解锁文章
7735

被折叠的 条评论
为什么被折叠?



