Spark作业部署到cloudera失败
Spark job deployment failure to cloudera
我在开发我的 spark strreaming 程序时使用了 guice 架构。它可以 运行 在我的 eclipse 中没有任何错误。但是用spark-submit命令编译部署后,returns报错:
java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
谷歌搜索后,我注意到只有在使用 guice 3.0 时才会出现此错误。但我使用的是 guice 4.0。我的spark版本是1.5.2,我的cloudera版本是5.3.2。是否有解决此错误的方法?
很遗憾,Spark v1.5.2
取决于 com.google.inject:guice:3.0
。
所以我怀疑正在发生的事情是您的项目正在同时进行:
Guice 4.0
(作为依赖项文件中声明的直接依赖项,如 pom.xml
或 build.sbt
);和
Guice 3.0
(由Spark v1.5.2
拉动的传递依赖)
基本上你的类路径最终会变得一团糟,并且根据类加载器在运行时加载 类 的方式,你将(或不会)遇到此类错误。
您将不得不使用已经 provided
版本的 Guice(由 Spark 拉动)或开始使用类加载器。
更新:
的确 org.apache.spark:spark-core_2.10:1.5.2
拉 com.google.inject:guice:3.0
:
+-org.apache.spark:spark-core_2.10:1.5.2 [S]
+ ...
...
+-org.apache.hadoop:hadoop-client:2.2.0
| +-org.apache.hadoop:hadoop-mapreduce-client-app:2.2.0
| | +-com.google.protobuf:protobuf-java:2.5.0
| | +-org.apache.hadoop:hadoop-mapreduce-client-common:2.2.0
| | | +-com.google.protobuf:protobuf-java:2.5.0
| | | +-org.apache.hadoop:hadoop-mapreduce-client-core:2.2.0
| | | | +-com.google.protobuf:protobuf-java:2.5.0
| | | | +-org.apache.hadoop:hadoop-yarn-common:2.2.0 (VIA PARENT org.apache.hadoop:hadoop-yarn:2.2.0 and then VIA ITS PARENT org.apache.hadoop:hadoop-project:2.2.0)
| | | | | +-com.google.inject:guice:3.0
...
spark-core
pom.xml
是 here.
hadoop-yarn-common
pom.xml
是 here。
hadoop-yarn
pom.xml
是 here.
hadoop-project
pom.xml
是 here.
我在开发我的 spark strreaming 程序时使用了 guice 架构。它可以 运行 在我的 eclipse 中没有任何错误。但是用spark-submit命令编译部署后,returns报错:
java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
谷歌搜索后,我注意到只有在使用 guice 3.0 时才会出现此错误。但我使用的是 guice 4.0。我的spark版本是1.5.2,我的cloudera版本是5.3.2。是否有解决此错误的方法?
很遗憾,Spark v1.5.2
取决于 com.google.inject:guice:3.0
。
所以我怀疑正在发生的事情是您的项目正在同时进行:
Guice 4.0
(作为依赖项文件中声明的直接依赖项,如pom.xml
或build.sbt
);和Guice 3.0
(由Spark v1.5.2
拉动的传递依赖)
基本上你的类路径最终会变得一团糟,并且根据类加载器在运行时加载 类 的方式,你将(或不会)遇到此类错误。
您将不得不使用已经 provided
版本的 Guice(由 Spark 拉动)或开始使用类加载器。
更新:
的确 org.apache.spark:spark-core_2.10:1.5.2
拉 com.google.inject:guice:3.0
:
+-org.apache.spark:spark-core_2.10:1.5.2 [S]
+ ...
...
+-org.apache.hadoop:hadoop-client:2.2.0
| +-org.apache.hadoop:hadoop-mapreduce-client-app:2.2.0
| | +-com.google.protobuf:protobuf-java:2.5.0
| | +-org.apache.hadoop:hadoop-mapreduce-client-common:2.2.0
| | | +-com.google.protobuf:protobuf-java:2.5.0
| | | +-org.apache.hadoop:hadoop-mapreduce-client-core:2.2.0
| | | | +-com.google.protobuf:protobuf-java:2.5.0
| | | | +-org.apache.hadoop:hadoop-yarn-common:2.2.0 (VIA PARENT org.apache.hadoop:hadoop-yarn:2.2.0 and then VIA ITS PARENT org.apache.hadoop:hadoop-project:2.2.0)
| | | | | +-com.google.inject:guice:3.0
...
spark-core
pom.xml
是 here.
hadoop-yarn-common
pom.xml
是 here。
hadoop-yarn
pom.xml
是 here.
hadoop-project
pom.xml
是 here.