Искра нетлиб-ява БЛАС

Я пытаюсь устранить неполадки в моей неработающей настройке apache spark и netlib, и я не знаю, что делать дальше.

Вот некоторая информация:

  • Spark 1.3.1 (но тоже попробовал 1.5.1)
  • Мезос кластер с 3 узлами
  • Ubuntu Trusty на каждом узле и установлен после пакета BLAS

    $ dpkg -l | grep 'blas\|atlas\|lapack'
    ii  libopenblas-base                    0.2.8-6ubuntu1                   amd64        Optimized BLAS (linear algebra) library based on GotoBLAS2
    
    $ update-alternatives --get-selections | grep 'blas\|lapack'
    libblas.so.3                   auto     /usr/lib/openblas-base/libblas.so.3
    

Я создал образец jar для тестирования, может ли netlib-java обнаружить эти библиотеки, с помощью следующего кода:

object Main extends App {
  println(com.github.fommil.netlib.BLAS.getInstance().getClass().getName())
  println(com.github.fommil.netlib.LAPACK.getInstance().getClass().getName())
}

Когда я выполняю этот код, я получаю следующий ответ:

$ java -jar artifacts/BLAStest-assembly-1.0.jar
Mar 29, 2016 3:43:33 PM com.github.fommil.netlib.BLAS <clinit>
WARNING: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
Mar 29, 2016 3:43:33 PM com.github.fommil.jni.JniLoader liberalLoad
INFO: successfully loaded /tmp/jniloader6790966128222263615netlib-native_ref-linux-x86_64.so
com.github.fommil.netlib.NativeRefBLAS
Mar 29, 2016 3:43:33 PM com.github.fommil.netlib.LAPACK <clinit>
WARNING: Failed to load implementation from: com.github.fommil.netlib.NativeSystemLAPACK
Mar 29, 2016 3:43:33 PM com.github.fommil.jni.JniLoader load
INFO: already loaded netlib-native_ref-linux-x86_64.so
com.github.fommil.netlib.NativeRefLAPACK

Так что, похоже, здесь все отлично работает. Но искра не может обнаружить библиотеки. Я добавил эту Java-зависимость в мою сборочную флягу

com.github.fommil.netlib:all:1.1.2

также, если я пытаюсь запустить оболочку с этим пакетом, он не работает.

spark-shell --packages com.github.fommil.netlib:all:1.1.2

1 ответ

Похоже, что ваша реализация netlib-java загружает NativeRefBLAS, но не NativeSystemBLAS. Это означает, что вы включили "com.github.fommil.netlib: все" работает нормально, так как без него вы бы использовали ненативную реализацию F2J. Проблема в том, что вы хотите использовать предоставляемый системой BLAS (OpenBLAS) вместо эталонной реализации, поставляемой с netlib-java. Вероятно, это просто вопрос получения правильных общих библиотек в месте, видимом для ваших искровых исполнителей.

Вы сказали, что связали libblas.so.3, но, как описано в readme netlib-java, вам также необходимо настроить libblas.so, liblapack.so и liblapack.so.3:

sudo apt-get install libatlas3-base libopenblas-base
sudo update-alternatives --config libblas.so
sudo update-alternatives --config libblas.so.3
sudo update-alternatives --config liblapack.so
sudo update-alternatives --config liblapack.so.3
Другие вопросы по тегам