在flink1.3.2及一下版本中有一个bug,导致吧cpu打满,从而会影响node manager上其他task的正常运行。官方链接说明:
https://issues.apache.org/jira/browse/FLINK-7368
看了以后,是由于MetricStore中使用hashmap,在多线程下出现死循环,导致cpu被打满。升级到1.4.2及以上版本就可以解决。升级过程中的注意事项:
1、需要jdk1.8版本:
flink1.3.2支持jdk7,到了1.4.2后最低版本要求1.8。否则会报如下错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/flink/api/common/serialization/DeserializationSchema : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2625) at java.lang.Class.getMethod0(Class.java:2866) at java.lang.Class.getMethod(Class.java:1676) at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
2、scala最低要求2.11版本:
在maven依赖中,需要把对应的scala版本升级到2.11。
3、需要手动引入hadoop-hdfs依赖:
在flink1.3.2中,flink会把hadoop相关的jar包打到flink包中。在1.4.2没有这么做,所以如果使用自定义Bucketer这种功能的时候需要手动引入,否则会报:org.apache.hadoop.fs找不到
org.apache.hadoop hadoop-hdfs 2.4.1 provided org.apache.hadoop hadoop-common 2.4.1 provided
在1.3.2中我们可以看到这个包中包含了hadoop相关类
Original: https://blog.51cto.com/u_5650011/5395010
Author: 赶路人儿
Title: flink升级到1.4.2
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/517252/
转载文章受原作者版权保护。转载请注明原作者出处!