8

動作しない apache spark と netlib のセットアップをトラブルシューティングしようとしていますが、次に何をすればよいかわかりません。

ここにいくつかの情報があります:

  • Spark 1.3.1 (ただし、1.5.1 も試しました)
  • 3 つのノードを持つ Mesos クラスター
  • すべてのノードに 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
    

次のコードを使用して、 netlib-javaがこのライブラリを検出できるかどうかをテストするためのサンプル jar を作成しました。

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

したがって、ここではうまく機能しているようです。しかし、spark はライブラリを検出できません。この Java 依存関係をアセンブリ jar に追加しました

com.github.fommil.netlib:all:1.1.2

また、このパッケージでスパーク シェルを起動しようとしても機能しません。

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

1 に答える 1

7

netlib-java 実装は NativeRefBLAS をロードしているようですが、NativeSystemBLAS はロードしていないようです。これは、「com.github.fommil.netlib:all」を含めても問題なく機能していることを意味します。これがないと、ネイティブではない F2J 実装を使用することになります。問題は、netlib-java に付属するリファレンス実装ではなく、システム提供の BLAS (OpenBLAS) を使用することです。これはおそらく、spark executor から見える場所に適切な共有ライブラリを配置するだけの問題です。

libblas.so.3 をリンクしたとおっしゃいましたが、netlib-java readmeで説明されているように、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
于 2016-04-19T15:21:49.110 に答える