2017-11-30 18 views
0

Yarnを使用してspark over hbaseとhadoopを使用すると、 のアセンブリライブラリがサーバー側に用意されています。 (spark-looongVersion-haddop-looongVersion.jarのように呼ばれます) には、多数のライブラリが含まれています。assembly jarをデプロイして、それを提供された依存関係として使用する方法は?

スパークジャーを実行するためのサーバにジョブとして送信される場合、競合がライブラリ間で生じる可能性は、ジョブとサーバーライブラリ(アセンブリジャーおよびおそらく他のライブラリ)に含まれます。

クライアント依存関係とサーバークラスパスの間の競合を避けるために、このアセンブリjarを "提供された" maven依存関係として含める必要があります。 このアセンブリjarを提供された依存関係として展開して使用するにはどうすればよいですか?

答えて

0

どのように私が展開して提供する依存関係として、このアセンブリの瓶を使用することができますか?

アセンブリーjarは通常のjarファイルであり、他のjarファイルはアーティファクト・レポでダウンロード可能な場合はライブラリ依存性があります。 Nexus、Artifactoryなど。

それを行うための最も簡単な方法は、(MavenのGuide to installing 3rd party JARsを参照してください)Mavenのローカルリポジトリでそれを「インストール」することです。しかし、それはあなたがローカルで利用できるものに縛られ、他のチームが使っているものとすぐに同期しなくなります。

Apache Maven Deploy Pluginを使用して依存関係を展開することをお勧めします。

デプロイされたら、それを依存関係として宣言することは、他の依存関係を宣言することと変わりありません。

+0

[OK]を、私はindividualy提供依存関係として、それぞれが含まれていた場合、展開した後、私は提供依存関係として組み立てジャーが含まれている場合ので、(WEB-INFの下でファイル内のアーチファクトとバージョンによって記載されている)内のすべてのライブラリが同様に除外されますか? – user1767316

+0

アセンブリ・ジャーがサーバー上で使用されておらず、サーバーによってhadoopインストールから提供されていませんか?したがって、すべてのチームが同じものを使用してはいけませんか? – user1767316

0

提供依存性の範囲

スパークの依存関係は、組み立てられたJARから除外されなければなりません。そうでない場合は、アプリケーションの起動時にJavaクラスローダーからの奇妙なエラーが予想されます。 Sparkの依存関係のないアセンブリのメリットとしては、より迅速な展開が挙げられます。アプリケーションアセンブリは、ネットワークを介してすべてのクラスタノード(たとえば、HDFSまたはS3)がアクセスできる場所にコピーする必要があります。

+0

問題についての知識があるようですが、ありがとうございます。 – user1767316

関連する問題