web-dev-qa-db-ja.com

アプリケーションjarがhdfsにあるときにSpark-Submitが機能しない

spark bin/spark-submitを使用してアプリケーションを実行しようとしています。ローカルファイルシステム内でアプリケーションjarを参照すると、動作します。ただし、アプリケーションjarをディレクトリにコピーするとhdfsでは、次の例外が発生します。

警告:リモートjar hdfs:// localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jarをスキップします。 Java.lang.ClassNotFoundException:com.example.SimpleApp

コマンドは次のとおりです。

$ ./bin/spark-submit --class com.example.SimpleApp --master local hdfs://localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar

Hadoopバージョン2.6.0を使用しています。sparkバージョン1.2.1

29
dilm

私が使っていたとき、それが私のために働いた唯一の方法

-マスターヤーンクラスター

20
Romain

Spark-jobがHDFSライブラリにアクセスできるようにするには、ジョブをクラスターモードで実行する必要があります。

$SPARK_HOME/bin/spark-submit \
--deploy-mode cluster \
--class <main_class> \
--master yarn-cluster \
hdfs://myhost:8020/user/root/myjar.jar

また、Spark JIRAはまだサポートされていないクライアントモードで発生します。

SPARK-1064 :クライアントモードでHDFSアプリケーションのダウンロードをサポートspark submit

8
Sanjiv

回避策があります。 HDFS(アプリケーションjarを含む)のディレクトリをローカルディレクトリとしてマウントできます。

私は同じことをしました(Azure BLOBストレージを使用していますが、HDFSでも同様のはずです)

azure wasbのコマンド例

Sudo mount -t cifs //{storageAccountName}.file.core.windows.net/{directoryName} {local directory path} -o vers=3.0,username={storageAccountName},password={storageAccountKey},dir_mode=0777,file_mode=0777

ここで、spark submitコマンドで、上記のコマンドからのパスを指定します

$ ./bin/spark-submit --class com.example.SimpleApp --master local {local directory path}/simple-project-1.0-SNAPSHOT.jar

1
amit kapoor