1

reduce メソッド用にロードする必要があるネイティブ ライブラリがあり、それを分散キャッシュに追加しましたが、マップ メソッドで System.loadLibrary(mylib.so) を呼び出すと、エラーが発生し、マップ タスクが失敗しました。

Error: no mylib.so in java.library.path

分散キャッシュに追加しましたが。手順がありませんか?私のジョブ構成では、次を呼び出します。

DistributedCache.addCacheFile(uri, job.getConfiguration());

uri は、hadoop ファイル システム上の mylib.so へのパスです。

このネイティブ ライブラリは、hadoop fs の /hadoop/fs/mystuff/libs にすべて存在する他の多くのライブラリに依存しています。それらをすべて分散キャッシュに追加し、System.loadLibrary() 呼び出しを使用して、reduce タスクにそれらすべてをロードしようとしました。しかし、同じ java.library.path エラーが発生し続けます。ライブラリをコマンドライン引数として -files フラグに追加しようとしましたが、それでも上記のエラーが発生します。

4

2 に答える 2

0

なぜこれが起こっているのか正確にはわかりませんが、Cloudera のブログ エントリ、Map-Reduce ジョブにサードパーティ ライブラリを含める方法を確認してください。

于 2012-10-19T04:08:49.147 に答える