【问题标题】:Apache Spark - "Initial job has not accepted any ressources" when --master option is setApache Spark - 设置 --master 选项时“初始作业未接受任何资源”
【发布时间】:2017-06-16 13:46:55
【问题描述】:

我已经在 Digital Ocean 上设置的集群中使用 Spark 几个星期了,有一个主服务器和一个从服务器,但我一直遇到同样的错误“初始作业没有接受任何资源;请检查您的集群UI 以确保工人已注册并拥有足够的资源”。我不得不问,因为这里或互联网上的答案都没有解决这个问题。

所以我正在我的电脑上尝试并掌握这个命令:

./bin/pyspark --master spark://<MASTER-IP>:7077

shell 启动正确,但如果我用这个例子测试它:

sc.parallelize(range(10)).count()

我得到了错误。

我确定这不是资源问题,因为我可以从两个节点启动 shell 并毫无问题地创建 rdd,在 spark-env.sh 中设置内存和核心变量,并且主从可以通过 ssh 进行通信另一个。我读过它可能是从机无法与驱动程序进行通信,在我的情况下,驱动程序可能是我的计算机或主机。

【问题讨论】:

  • 集群 UI 说什么?另外,slave可以和启动python控制台的机器对话吗?
  • 我可以看到在 UI 上运行的 worker 和 PySparkShell。问题是当我在我的电脑上运行控制台时,spark.driver.host 会显示一个私有 IP。

标签: apache-spark pyspark


【解决方案1】:

spark 从节点和主节点必须能够与驱动程序进行通信,即您需要在您的 pc 上打开到集群的端口(最好只允许集群中的特定节点 ips)。

我相信如果是这种情况,您可以在工作节点的 stderr 日志中看到连接错误。

有关配置端口的更多详细信息,请参阅network security guide

【讨论】:

    【解决方案2】:

    我通过设置专用网络并在 spark-env.sh 中编辑 SPARK_LOCAL_IP 使其工作。所以现在,如果我通过 ssh'ing 在 master 上运行 spark shell,它就可以工作了;尽管即使打开端口也不是来自该网络之外。所以我想知道是否真的可以远程运行shell?

    【讨论】:

      【解决方案3】:

      Spark on Yarn 可以在两种模式下运行

      1. 集群模式 - spark 驱动程序在 spark 主节点中运行
      2. 客户端模式 - spark 驱动程序从客户端运行 交互式 shell 正在运行。

      集群模式不太适合像在 pyspark 中那样以交互方式使用 Spark。需要用户输入的 Spark 应用程序(例如 spark-shell 和 pyspark)需要 Spark 驱动程序在启动 Spark 应用程序的客户端进程内运行。

      客户端模式可以在如下环境中设置
      export PYSPARK_SUBMIT_ARGS='--master yarn --deploy-mode client pyspark-shell'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-18
        • 1970-01-01
        • 2016-12-11
        • 1970-01-01
        • 2020-02-01
        • 2015-06-10
        • 1970-01-01
        相关资源
        最近更新 更多