如何处理Flink任务配置State Backend为RocksDB时报错GLIBC版本问题
问题
Flink任务配置State Backend为RocksDB时,运行报如下错误:
Caused by: java.lang.UnsatisfiedLinkError: /srv/BigData/hadoop/data1/nm/usercache/***/appcache/application_****/rocksdb-lib-****/librocksdbjni-linux64.so: /lib64/libpthread.so.0: version `GLIBC_2.12` not found (required by /srv/BigData/hadoop/***/librocksdbjni-linux64.so) at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1965) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1890) at java.lang.Runtime.load0(Runtime.java:795) at java.lang.System.load(System.java:1062) at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:78) at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:56) at org.apache.flink.contrib.streaming.state.RocksDBStateBackend.ensureRocksDBIsLoaded(RocksDBStateBackend.java:734) ... 11 more
可能原因
运行的系统和编译环境所在的系统版本不同,造成GLIBC的版本不兼容。
定位思路
使用strings /lib64/libpthread.so.0 | grep GLIBC命令查看GLIBC是否版本低于2.12。
处理步骤
如果GLIBC版本太低,则需要使用含有较高版本的(此处为2.12)的文件替换掉"libpthread-*.so"(注意,这是一个链接文件,执行时只需要替换掉它所指向的文件即可)。
参考信息
无