Spark使用master作为yarn-client(windows)提交错误"无法找到或加载主类"

时间:2017-02-19 12:08:12

标签: hadoop apache-spark yarn

我在Windows 8.1上安装了带有spark 1.4.1的Hadoop2.7.1

当我执行以下命令

cd spark
spark-submit --class org.apache.spark.examples.SparkPi  --master yarn --deploy-mode client lib/spark-examples*.jar  10

我在JobHistoryServer日志中得到以下错误

Error: Could not find or load main class '-Dspark.externalBlockStore.folderName=spark-262c4697-ef0c-4042-af0c-8106b08574fb'

我做了进一步的调试(沿着搜索网)并且可以获得容器cmd脚本,其中给出了下面的部分(省略了其他行)

...
@set CLASSPATH=C:/tmp/hadoop-xyz/nm-local-dir/usercache/xyz/appcache/application_1487502025818_0003/container_1487502025818_0003_02_000001/classpath-3207656532274684591.jar
...
@call %JAVA_HOME%/bin/java -server -Xmx512m -Djava.io.tmpdir=%PWD%/tmp '-Dspark.fileserver.uri=http://192.168.1.2:34814' '-Dspark.app.name=Spark shell' '-Dspark.driver.port=34810' '-Dspark.repl.class.uri=http://192.168.1.2:34785' '-Dspark.driver.host=192.168.1.2' '-Dspark.externalBlockStore.folderName=spark-dd9f3f84-6cf4-4ff8-b0f6-7ff84daf74bc' '-Dspark.master=yarn-client' '-Dspark.driver.appUIAddress=http://192.168.1.2:4040' '-Dspark.jars=' '-Dspark.executor.id=driver' -Dspark.yarn.app.container.log.dir=/dep/logs/userlogs/application_1487502025818_0003/container_1487502025818_0003_02_000001 org.apache.spark.deploy.yarn.ExecutorLauncher --arg '192.168.1.2:34810' --executor-memory 1024m --executor-cores 1 --num-executors  2 1> /dep/logs/userlogs/application_1487502025818_0003/container_1487502025818_0003_02_000001/stdout 2> /dep/logs/userlogs/application_1487502025818_0003/container_1487502025818_0003_02_000001/stderr

我检查CLASSPATH的相关文件,看起来没问题。主要类org.apache.spark.deploy.yarn.ExecutorLauncher在spark程序集jar中可用,它是容器jar的一部分

那么,这可能是什么问题?我搜索网并发现了许多讨论,但是对于unix变种,但对于Windows来说并不多。我想知道Spark提交是否真的适用于Windows(仅限纱线客户端模式,独立群集模式工作)而没有任何特殊设置!!!

顺便说一句,如果我从cmd.exe命令提示符运行上面的java命令,我会得到相同的错误,因为所有命令行参数都引用单引号而不是双引号(使这些双引号有效!!),这是一个错误

注意spark-shell也会失败(在纱线模式下),但yarn jar ...命令有效

1 个答案:

答案 0 :(得分:0)

看起来它是早期版本的缺陷。使用最新的Hadoop 2.7.3和spark 2.1.0,它运行正常。!!!但是找不到任何参考。