当应用程序jar在hdfs中时,Spark-submit无法正常工作

时间:2015-02-26 10:18:06

标签: hadoop apache-spark hdfs

我正在尝试使用bin / spark-submit运行spark应用程序。当我在我的本地文件系统中引用我的应用程序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,火花版本1.2.1

4 个答案:

答案 0 :(得分:19)

当我使用

时,它对我有用的唯一方式
  

- 主纱簇

答案 1 :(得分:8)

要使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-10643:支持在客户端模式下提交HDFS应用程序spark submit

答案 2 :(得分:1)

有一种解决方法。您可以将目录安装在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

答案 3 :(得分:-1)

是的,它必须是本地文件。我认为这只是答案。