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;
	
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值