同じコードをSparkスタンドアロンで実行できますが、Spark on Yarnを実行するとYarnで失敗しました。例外はjava.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.common.xcontent.json.JsonXContent
であり、これはExecutor(Yarn Container)に投げられました。しかし、私はMavenアセンブリを使用したときにアプリケーションアセンブリjarにelasticSearch jarを含めました。次のようにrunコマンド:してください、次のようにSpark on Yarnを実行したときにクラスが見つかりません
spark-submit --executor-memory 10g --executor-cores 2 --num-executors 2
--queue thejob --master yarn --class com.batch.TestBat /lib/batapp-mr.jar 2016-12-20
Mavenの依存関係:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.10</artifactId>
<version>1.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.10</artifactId>
<version>1.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>1.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-catalyst_2.10</artifactId>
<version>1.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.3</version>
<!-- <scope>provided</scope> -->
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.2.0-cdh5.7.0</version>
<!--<scope>provided</scope> -->
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.2.0-cdh5.7.0</version>
<!--<scope>provided</scope> -->
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-protocol</artifactId>
<version>1.2.0-cdh5.7.0</version>
<!--<scope>provided</scope> -->
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-hadoop2-compat</artifactId>
<version>1.2.0-cdh5.7.0</version>
<!--<scope>provided</scope> -->
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>1.2.0-cdh5.7.0</version>
<!--<scope>provided</scope> -->
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-hadoop-compat</artifactId>
<version>1.2.0-cdh5.7.0</version>
<!--<scope>provided</scope> -->
</dependency>
<dependency>
<groupId>com.sksamuel.elastic4s</groupId>
<artifactId>elastic4s-core_2.10</artifactId>
<version>2.3.0</version>
<!--<scope>provided</scope> -->
<exclusions>
<exclusion>
<artifactId>elasticsearch</artifactId>
<groupId>org.elasticsearch</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch-hadoop</artifactId>
<version>2.3.1</version>
<exclusions>
<exclusion>
<artifactId>log4j-over-slf4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
奇妙なことは、エグゼキュータは、HBaseのジャーとの両方が依存関係に含まElasticSearchジャーではなくElasticSearchを見つけることができるということですいくつかのクラス、私はいくつかのクラスの競合かもしれないと思います。私はそれが "欠けているクラス"を含む組立瓶を点検した。
ここに依存するリストはありますか? – mrsrinivas
私はちょうど、ありがとうたくさん追加しました! – Jack
私の答えが役立つことを確認してください! –