Flink升级到1.4版本遇到的坑

  Flink 1.4没出来以前,一直使用Flink 1.3.2,感觉还算稳定,最近将运行环境升级到1.4,遇到了一些坑:

 

1.需要将可运行程序,基于1.4.0重新编译一次

2.对比了一下flink-conf.yml中的配置,发现一处不同点:

# The port under which the web-based runtime monitor listens.
# A value of -1 deactivates the web server.

1.3.2:jobmanager.web.port: 8081

1.4.0:web.port: 8081

1.4.0 少了前面的“jobmanager”,但是查看官网1.4.0的文档,配置项却是:jobmanager.web.port(https://ci.apache.org/projects/flink/flink-docs-release-1.4/ops/config.html)

查看源代码,原来是两个都行,不过后面应该建议都用web开头的,改了还不少:

3.在Configuration的Common Options部分,1.4多了如下的东西:

classloader.resolve-order: Whether Flink should use a child-first ClassLoader when loading 
user-code classes or a parent-first ClassLoader. Can be one of parent-first or child-first. (default: child-first) classloader.parent-first-patterns: A (semicolon-separated) list of patterns that specifies
which classes should always be resolved through the parent ClassLoader first.
A pattern is a simple prefix that is checked against the fully qualified class name.
By default, this is set to java.;org.apache.flink.;javax.annotation;org.slf4j;org.apache.log4j;org.apache.logging.log4j;ch.qos.logback.
If you want to change this setting you have to make sure to also include the default patterns in your list of patterns if you want to keep that default behaviour.

Flink程序,原来在1.3.2上跑着没问题,换到1.4后,总是报:

java.lang.LinkageError: loader constraint violation:
loader (instance of org/apache/flink/runtime/execution/librarycache/FlinkUserCodeClassLoaders$ChildFirstClassLoader)
previously initiated loading for a different type with name "scala/collection/Iterable"

 

查看发布说明,才知道默认类加载顺序变了:

https://flink.apache.org/news/2017/12/12/release-1.4.0.html

 

在flink-conf.yml中配置了

classloader.resolve-order: parent-first

后问题解决

所以每个版本的发布说明,得仔细看清楚。

 

转载于:https://www.cnblogs.com/liugh/p/8057656.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值