Ошибка «java.lang.unsatisfiedlink Error:__strncpy_chk» при запуске Spark на kubernetes

#apache-spark #kubernetes #bigdl

#apache-spark #kubernetes #bigdl

Вопрос:

Я пытаюсь запустить задание DL на Spark в kubernetes в режиме кластера и получаю ошибку java.lang.unsatisfiedlink Error:__strncpy_chk: символ не найден.

Это полный стек ошибок.

 Exception in thread "main" java.lang.UnsatisfiedLinkError:
  /tmp/dlNativeLoader8370768401448024359libiomp5.so: 
  Error relocating /tmp/dlNativeLoader8370768401448024359libiomp5.so: 
  __strncpy_chk: symbol not found
    

at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at com.intel.analytics.bigdl.mkl.MKL.<clinit>(MKL.java:56)
    at com.intel.analytics.bigdl.utils.Engine$.initThreadPool(Engine.scala:400)
    at com.intel.analytics.bigdl.utils.Engine$.setCoreNumber(Engine.scala:313)
    at com.intel.analytics.bigdl.utils.Engine$.setNodeAndCore(Engine.scala:470)
    at com.intel.analytics.bigdl.utils.Engine$.init(Engine.scala:124)
    at com.intel.analytics.bigdl.models.lenet.Train$$anonfun$main$1.apply(Train.scala:41)
    at com.intel.analytics.bigdl.models.lenet.Train$$anonfun$main$1.apply(Train.scala:36)
  

Ответ №1:

Как я обнаружил, изображения контейнера docker в моем кластере использовали musl libc (alpine) Linux. И рабочая нагрузка BigDL требовала более высокой версии glibc. Таким образом, система должна была быть ubuntu 16.04 или выше. Это решило мою проблему.