无法将群集部署模式下的Spark应用程序提交到独立Spark群集

时间:2018-01-17 05:36:45

标签: apache-spark amazon-s3 deployment

我在独立模式下在AWS EC2上创建了一个Spark群集 一切都在--deploy-mode client中运行良好 - 我可以读取和写入AWS S3 但在--deploy-mode cluster中,它总是失败 我使用的命令如下:

  ./bin/spark-submit  \
    --class ... \
    --master spark://...:7077 \ # I also tried with 6066
    --deploy-mode cluster \
    --conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \
    ... \
    --jars /local/path/to/hadoop-aws-2.7.3.jar,/local/path/to/aws-java-sdk-1.7.4.jar \
    --conf spark.driver.extraClassPath=aws-java-sdk-1.7.4.jar:hadoop-aws-2.7.3.jar \
    --conf spark.executor.extraClassPath=aws-java-sdk-1.7.4.jar:hadoop-aws-2.7.3.jar \
    --verbose \
    /local/path/to/app.jar

错误消息是:

  18/01/17 05:13:39 ERROR ClientEndpoint: Exception from cluster was: java.nio.file.NoSuchFileException: /local/path/to/app.jar
  java.nio.file.NoSuchFileException: /local/path/to/app.jar
      at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
      at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
      at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
      at sun.nio.fs.UnixCopyFile.copy(UnixCopyFile.java:526)
      at sun.nio.fs.UnixFileSystemProvider.copy(UnixFileSystemProvider.java:253)
      at java.nio.file.Files.copy(Files.java:1274)
      at org.apache.spark.util.Utils$.org$apache$spark$util$Utils$$copyRecursive(Utils.scala:625)
      at org.apache.spark.util.Utils$.copyFile(Utils.scala:596)
      at org.apache.spark.util.Utils$.doFetchFile(Utils.scala:681)
      at org.apache.spark.util.Utils$.fetchFile(Utils.scala:480)
      at org.apache.spark.deploy.worker.DriverRunner.downloadUserJar(DriverRunner.scala:155)
      at org.apache.spark.deploy.worker.DriverRunner.prepareAndRunDriver(DriverRunner.scala:173)
      at org.apache.spark.deploy.worker.DriverRunner$$anon$1.run(DriverRunner.scala:92)

根据官方Spark文档Submitting Applications ,应该可以让spark-submit通过指定--jars自动将我的jar上传到群集,我也不需要自己做。但似乎它并没有像预期的那样发挥作用。

我还试图将app.jar放到AWS S3上,导致另一个问题java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found;我还尝试让spark-submit通过--jars为我上传hadoop-aws jars,但仍然失败了。

是的,我可以自己把这些罐子塞进集群。我只是想知道,我的用法有什么问题。有人可以帮我一点吗?

1 个答案:

答案 0 :(得分:0)

根据我在独立火花设置方面的知识,您只能以本地方式运行。