2016-03-29 12 views
5

Próbuję rozwiązać problemy z niedziałającą instalacją iskiernika i netlib i nie wiem, co dalej.Spark netlib-java BLAS

Oto kilka informacji:

  • Spark 1.3.1 (ale również próbował 1.5.1)
  • Mesos Klaster z 3 węzłów
  • Ubuntu Trusty na każdym węźle i zainstalowane następujące pakietu 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 
    

Zbudowałem słoik na próbki do testów, jeśli netlib-java może wykryć to biblioteki, z następującego kodu:

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

Kiedy wykonać ten kod i uzyskać następujące odpowiedzi:

$ 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 

Więc wydaje się działać dobrze tutaj. Ale iskra nie może wykryć bibliotek. Dodałem tę zależność java do mojego słoja montażowego

com.github.fommil.netlib:all:1.1.2 

również, jeśli spróbuję uruchomić iskrę z tego pakietu, to nie działa.

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

Odpowiedz

3

Wygląda na to, że implementacja netlib-java ładuje NativeRefBLAS, ale nie NativeSystemBLAS. Oznacza to, że włączenie "com.github.fommil.netlib: all" działa poprawnie, ponieważ bez niego używałbyś natywnej implementacji F2J. Problem polega na tym, że chcesz używać dostarczonego przez system BLAS (OpenBLAS), zamiast referencyjnej implementacji dostarczonej z netlib-java. Jest to prawdopodobnie kwestia uzyskania właściwych bibliotek współdzielonych w miejscu, które jest widoczne dla twoich iskrzących executorów.

Mówiłeś, że jesteś połączony libblas.so.3, ale jak to opisano w netlib-java readme, trzeba również skonfigurować libblas.so, liblapack.so i 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 
+0

Thanks za odpowiedź. Nie znaleziono żadnych alternatyw dla libblas.so lub liblapack.so. Nie wiem, czy to może być już przyczyną. Mimo to moje małe narzędzie jest teraz połączone z NativeSystemBLAS. Ale iskrowa powłoka i każda iskra wciąż łączy się z implementacją F2J i nie mogę się dowiedzieć, jaka jest tam różnica: / – wobu