Java 从Windows向Linux群集提交spark应用程序

Java 从Windows向Linux群集提交spark应用程序,java,apache-spark,spark-streaming,Java,Apache Spark,Spark Streaming,我有一个Spark Master和Worker在远程Ubuntu Linux机器上运行 我正在试着运行这个例子。 但是当我从我的Windows机器提交到Linux集群时,我得到了 C:/spark-1.6.0-bin-hadoop2.6/bin/spark-submit--masterspark://10.123.45.67:6066 --部署模式集群——类com.company.spark.app.JavaDirectKafkaWordCount“C:/Dev/spark-app/target

我有一个Spark Master和Worker在远程Ubuntu Linux机器上运行

我正在试着运行这个例子。 但是当我从我的Windows机器提交到Linux集群时,我得到了

C:/spark-1.6.0-bin-hadoop2.6/bin/spark-submit--masterspark://10.123.45.67:6066 --部署模式集群——类com.company.spark.app.JavaDirectKafkaWordCount“C:/Dev/spark-app/target/spark-app-1.0-SNAPSHOT.jar”kafka服务器:9092 topic1

使用REST应用程序提交协议运行Spark。 使用Spark的默认log4j配置文件:org/apache/Spark/log4j defaults.properties
16/02/11 11:53:20信息重新提交客户端:提交在中启动应用程序的请求spark://10.123.45.67:6066.
2011年2月16日11:53:21信息重新提交客户端:提交已成功创建为驱动程序-20160211115129-0009。轮询提交状态…
2011年2月16日11:53:21信息重新提交客户端:提交提交驱动程序状态请求-20160211115129-0009 inspark://10.123.45.67:6066.
2011年2月16日11:53:21信息重新提交客户端:驱动程序状态driver-20160211115129-0009现在为错误。
2011年2月16日11:53:21信息重新提交客户端:驱动程序正在worker-20160211111114-172.18.0.8-59825 172.18.0.8:59825上运行。
16/02/11 11:53:21错误RestSubmissionClient:群集异常:
java.io.IOException:没有scheme:C的文件系统
org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2584)
org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591)
org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)
org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2630)
org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2612)
org.apache.hadoop.fs.FileSystem.get(FileSystem.java:370)
org.apache.spark.util.Utils$.getHadoopFileSystem(Utils.scala:1650)
org.apache.spark.util.Utils$.doFetchFile(Utils.scala:597)
org.apache.spark.util.Utils$.fetchFile(Utils.scala:394)
org.apache.spark.deploy.worker.DriverRunner.org$apache$spark$deploy$worker$DriverRunner$$downloadUserJar(DriverRunner.scala:150)
org.apache.spark.deploy.worker.DriverRunner$$anon$1.run(DriverRunner.scala:79) 2011年2月16日11:53:21信息重新提交客户端:服务器响应为
CreateSubmissionResponse:
{
“操作”:“CreateSubmissionResponse”,
“消息”:“驱动程序已成功提交为驱动程序-20160211115129-0009”,
“serverSparkVersion”:“1.6.0”,
“提交ID”:“驱动程序-20160211115129-0009”,
“成功”:正确
}


看起来Spark采用C:作为模式。试着换成

C:/spark-1.6.0-bin-hadoop2.6/bin/spark-submit --master spark://10.123.45.67:6066 --deploy-mode cluster --class com.company.spark.app.JavaDirectKafkaWordCount "file:///C:/Dev/spark-app/target/spark-app-1.0-SNAPSHOT.jar" kafka-server:9092 topic1

通过将
file://
添加到文件路径,可以告诉Spark模式是
file
,这样它就不会混淆并使用
C
作为模式。提交给spark using file的jar应该获得,以便集群可以看到它们。

您在submit命令中输入的应用程序jar文件使用windows位置,但根据spark官方文档:

application jar:绑定jar的路径,包括应用程序和所有依赖项。URL必须在集群内全局可见,例如,所有节点上都存在的hdfs://路径或file://路径

因此,文件必须存在或可从每个集群成员访问,如果使用本地文件系统,则必须确保文件存在于每个节点


在本地环境中,我使用file:///opt/spark-2.0.1-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.0.1.jar,它可以通过测试。

在本地运行时工作吗?尝试了
文件://
但提交投诉
java.io.FileNotFoundException:/C:/Dev/spark-app/target/spark-app-1.0-SNAPSHOT.jar(没有这样的文件或目录)
但是该文件是否存在?本以为是
C://
前面的斜杠导致了这种情况,所以从
文件://
中删除了一个斜杠,但它也不喜欢
java.lang.IllegalArgumentException:URI有一个权限组件
,它可能值得将一个快速应用程序放在一起,看看新文件是什么(“C:/Dev/spark-app/target/spark-app-1.0-SNAPSHOT.jar”).toURI()返回,因为我没有发现我发布的答案有任何错误,但我目前没有访问windows框进行测试的权限。