【问题标题】:Missing SPARK_HOME when using SparkLauncher on AWS EMR cluster在 AWS EMR 集群上使用 SparkLauncher 时缺少 SPARK_HOME
【发布时间】:2017-01-23 11:30:13
【问题描述】:

我正在使用 EMR 5.0 和 Spark 2.0.0。 我正在尝试使用 org.apache.spark.launcher.SparkLauncher 从 Scala spark 应用程序运行子 spark 应用程序

我需要使用 setSparkHome 设置 SPARK_HOME:

 var handle = new SparkLauncher()
    .setAppResource("s3://my-bucket/python_code.py")
    .setAppName("PythonAPP")
    .setMaster("spark://" + sparkSession.conf.get("spark.driver.host") +":"+ sparkSession.conf.get("spark.driver.port"))
    .setVerbose(true)
    .setConf(SparkLauncher.EXECUTOR_CORES, "1")
    .setSparkHome("/srv/spark") // not working
    .setDeployMode("client")
    .startApplication(
      new SparkAppHandle.Listener() {

        override def infoChanged(hndl: SparkAppHandle): Unit = {
          System.out.println(hndl.getState() + " new  state !")
        }

        override def stateChanged(hndl: SparkAppHandle): Unit = {
          System.out.println(hndl.getState() + "    new  state !")
        }
      })

在哪里可以找到我的 Spark 主页的适当路径? 该集群由 1 个 Master、1 个 Core 和 1 个 Task 服务器构建而成。

谢谢!

【问题讨论】:

  • 如果我理解正确的话,这将在 EMR 集群上运行,但不会使用 EMR 步骤,对吧?

标签: amazon-web-services apache-spark pyspark emr amazon-emr


【解决方案1】:

从 emr-4.0.0 开始,EMR 上的所有应用程序都在 /usr/lib 中。 Spark 在 /usr/lib/spark 中。

【讨论】:

  • 谢谢,但我仍然遇到同样的错误:16/09/18 09:07:02 ERROR ApplicationMaster: User class threw exception: java.io.IOException: Cannot run program "/usr/lib/spark/bin/spark-submit": error=2, No such file or directory java.io.IOException: Cannot run program "/usr/lib/spark/bin/spark-submit": error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.apache.spark.launcher.SparkLauncher.startApplication(SparkLauncher.java:428)
  • 你不是在主实例上运行这个吗?如果安装了Spark,master上肯定存在/usr/lib/spark,其他模式下不存在。
  • 顺便说一句,我还注意到您将 Spark master 设置为 spark://...,但这对于 EMR 上的 Spark 不正确,因为它在 YARN 上运行。正确的 Spark master 只是“纱线”。
  • 所以如果我设置 master=yarn,我如何在 master 上运行它?
  • 抱歉,我不确定您要问什么。您在安装了 Spark 的集群上运行,但您声称仍然收到错误消息,指出 /usr/lib/spark/bin/spark-submit 不存在,但如果您在主实例。如果该文件不存在,也许您以某种方式在错误的实例上运行?我不确定情况会如何,但你没有真正提供足够的信息来说明你是如何运行它的。
【解决方案2】:

我发现 AWS EMR 上的 Spark(使用版本 emr-5.23.0 和 emr-5.22.0 测试)没有在 EMR CORE 节点上安装 Spark。只需检查 /usr/lib/spark 上的 EMR 节点安装,它并不是像 EMR MASTER 节点上安装的那样真正的 SPARK_HOME。

在 EMR CORE 节点上安装 Spark 解决了我的问题。

【讨论】:

  • 我现在也有同样的问题,但是在 EMR Core 节点上安装 Spark 真的是一个解决方案吗?这听起来像一个完整的黑客。我不确定为什么核心节点没有与主节点相同的 Spark 设置。
  • 好吧,我不知道为什么,但它至少可以让事情正常进行。您最好询问有关 AWS EMR 支持的人。不过,我还没有在最新版本的 EMR 上进行过测试,也许它现在已经修复了。
猜你喜欢
  • 2023-02-20
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 2016-02-19
相关资源
最近更新 更多