Updated on 2022-08-16 GMT+08:00

Incorrect GLIBC Version

Question

When State Backend is set to RocksDB for a Flink task, the following error message is displayed:

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

Possible Causes

The version of the system where the task runs and the version of the system where the compilation environment locates are different, resulting in the incompatibility of GLIBC versions.

Troubleshooting Method

Run the strings /lib64/libpthread.so.0 | grep GLIBC command to check whether the GLIBC version is earlier than 2.12.

Procedure

If the version of the GLIBC is too early, use the file of later version (2.12) to replace libpthread-*.so. (This is a link file. You need to replace only the file that is linked to this link file.)

References

None