2016-12-28 8 views
2

YARNのスパーク・セットアップの旧バージョンを使用していますが、それでも新しいバージョンを使用したいと思っています。私は脂肪の瓶がこれのためにどのように使用できるのかを参照して投稿をcouple見つけました。YARNで複数のバージョンを実行するファット・ファー・ジャー

Many so postsファットジャーを作成するには、maven(公式にサポートされている)またはsbtのいずれかを指してください。downloadでは直接利用できないためです。 maven-assembly-plugin、maven-shade-plugin、onejar-maven-pluginなど複数のプラグインがあるようです。

しかし、本当にプラグインが必要かどうかはわかりませんもしそうなら、どれがどれだけ正確に行くのか。私は 'build/mvn'と 'build/sbt'を使ってgithubソースを直接コンパイルしようとしましたが、 'spark-assembly_2.11-2.0.2.jar'ファイルはわずか283バイトです。

私の目標は、hereと同様の方法で、新しいバージョンのfat jarを使ってpysparkシェルを実行することです。遠くjarファイルを作成するスパークバージョン2.0.0から

答えて

0

がもはやサポートされている、あなたはDo we still have to make a fat jar for submitting jobs in Spark 2.0.0?

でより多くの情報を見つけることができませんあなたのケースで推奨される方法(YARN上で実行されている)は、スパークの内容でHDFS上のディレクトリを作成することですjars/ディレクトリとspark-defaults.confにこのパスを追加します。

spark.yarn.jars hdfs:///path/too/jars/directory/on/hdfs/*.jar 

を次にあなたがpysparkを実行する場合、それは正確にスパーク1.xのから脂肪ジャーのように動作しますので、それは以前にアップロードしたライブラリを使用しますシェル

+0

明確にするために、私はgithubからspark 2.0.2 zipをダウンロードし、mavenを使ってコンパイルし、 'target/scala-2.11/jars'のすべてのJARをhdfsディレクトリに置くべきです。次に、** Spark 1.xディレクトリのspark-defaults.conf **をこのhdfsディレクトリに変更し、そこからpysparkを実行しますか?または、この2.xはマスターのローカルディレクトリにあり、confがhdfsディレクトリを指すように更新する必要がありますか?後者の場合、追加のセットアップ/設定が必要でしょうか?ありがとう! – noobman

+0

sparkをダウンロードした後、実行可能なディストリビューションにビルドします(http://spark.apache.org/docs/latest/building-spark.html#building-a-runnable-distribution)。次に、結果の 'tgz'ファイルをマスタにコピーし、それを独自のディレクトリに展開します(spark1とは独立しています)。x)を開き、jarファイル(解凍されたtgzから)をHDFSにコピーします。次に、configを変更し、すべてのスパークディストリビューションの設定を区切ります。 – Mariusz

+0

'./dev/make-distribution.sh --name custom-spark-tgz -Phadoop-2.7 -Phive -Phive-thriftserver -Pyarn'をディレクトリに実行しました後に 'dist /'ディレクトリを持たずにかなり長い[シェル出力](http://pastebin.com/McH86bwE)を得ました。 – noobman

0

(YARNアーキテクチャにあなたのスパークを変更し、あなたのYARNの管理者に話すことなく)最も簡単な解決策は、以下のとおりです。

  1. それはSBTやMavenも、ビルドシステムにスパーク2上のライブラリの依存関係を定義します。

  2. Sparkアプリケーションを組み立てて、内部にSparkライブラリを持ついわゆるuber-jarまたはfatjarを作成します。

私は個人的にプロジェクトで少なくとも1回テストしました。

これは、ビルド処理に時間がかかります(sbt assemblyではなくsbt packageである必要があります)、Sparkアプリケーションの配備可能なfatjarのサイズは...まあ...もっと大きくなります。また、ワイヤーでYARNするには​​する必要があるので、展開が長くなります。

これはすべて機能しますが、時間がかかります(ClouderaのCDHやHortonworksのHDPやMapRディストリビューションなどの商用サービスで利用できるものについて忘れてしまいます)。

+0

私は主にpysparkシェルを使用し、.pyファイルを使ってspark-submitしたので、ビルド/ライブラリの依存関係についてよく知らないです。多少の遅延や大きなサイズに気にしないでしょうが、これはPythonでどのように機能しますか? – noobman

+0

依存関係をまとめて(依存関係のみのプロジェクトとして)、 '* .py'スクリプトを使って' --jars'を使うことができると思います。私はそれがうまくいくと思います( '--conf spark.yarn.jar = ...'であなたの質問で指摘した答えと同様です)。 –

関連する問題