将Spark应用程序从Windows提交到Linux集群

时间:2016-02-11 11:56:41

标签: java apache-spark spark-streaming

我在远程Ubuntu Linux机器上运行Spark Master和Worker。

我试图运行JavaDirectKafkaWordCount示例。 但是当我从我的Windows机器提交到Linux集群时,我得到了

  

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" C:/Dev/spark-app/target/spark-app-1.0-SNAPSHOT.jar" kafka-server:9092 topic1

     

使用REST应用程序提交协议运行Spark。   使用Spark的默认log4j配置文件:org / apache / spark / log4j-defaults.properties
  16/02/11 11:53:20 INFO RestSubmissionClient:在spark://10.123.45.67:6066中提交启动应用程序的请求。
  16/02/11 11:53:21 INFO RestSubmissionClient:提交成功创建为driver-20160211115129-0009。轮询提交状态...
  16/02/11 11:53:21 INFO RestSubmissionClient:在spark://10.123.45.67:6066中提交提交驱动程序-2020211115129-0009状态的请求。
  16/02/11 11:53:21 INFO RestSubmissionClient:驱动程序驱动程序的状态-20160211115129-0009现在是ERROR。
  16/02/11 11:53:21 INFO RestSubmissionClient:驱动程序在worker worker-20160211111114-172.18.0.8-59825 172.18.0.8:59825上运行。
  16/02/11 11:53:21错误RestSubmissionClient:群集异常:
  java.io.IOException:没有用于scheme的FileSystem: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 $阿帕奇$火花$部署$工人$ DriverRunner $$ downloadUserJar(DriverRunner.scala:150)
          org.apache.spark.deploy.worker.DriverRunner $$匿名$ 1.run(DriverRunner.scala:79)   16/02/11 11:53:21 INFO RestSubmissionClient:服务器以
回复       CreateSubmissionResponse:
      {
      "动作" :" CreateSubmissionResponse",
      "消息" :"驱动程序成功提交为驱动程序-20160211115129-0009",
        " serverSparkVersion" :" 1.6.0",
        " submissionId" :" driver-20160211115129-0009",
        "成功" :真的       }

2 个答案:

答案 0 :(得分:0)

看起来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的jar应获得hosted by spark,以便群集可以看到它们。

答案 1 :(得分:0)

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

  

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

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

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