文档首页/ MapReduce服务 MRS/ 开发指南(LTS版)/ Flink开发指南(安全模式)/ Flink应用开发常见问题/ 如何处理Flink任务配置State Backend为RocksDB时报错GLIBC版本问题
更新时间:2024-08-03 GMT+08:00

如何处理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"(注意,这是一个链接文件,执行时只需要替换掉它所指向的文件即可)。

参考信息