【问题标题】:Spark Driver does not have any worker allottedSpark Driver 没有分配任何工作人员
【发布时间】:2021-04-18 17:32:36
【问题描述】:

我正在学习 spark 并尝试执行简单的 wordcount 应用程序。我正在使用

spark version 2.4.7-bin-hadoop.2.7
scala 2.12
java 8

具有 1 个主节点和 2 个工作节点的 Spark 集群作为独立集群运行 火花配置是

 spark.master                     spark://localhost:7077
 spark.serializer                 org.apache.spark.serializer.KryoSerializer
 spark.driver.memory              500M

主启动脚本是${SPARK_HOME}/sbin/start-master.sh

从机启动脚本为${SPARK_HOME}/sbin/start-slave.sh spark://localhost:7077 -c 1 -m 50M

我想在集群模式下启动驱动

${SPARK_HOME}/bin/spark-submit   --master spark://localhost:7077   --deploy-mode cluster   --driver-memory 500M  --driver-cores 8   --executor-memory 50M   --executor-cores 4  <absolut path to the jar file having code>

注意:完成的驱动程序/应用程序是我必须杀死的

我在阅读 spark doc 并查看博客后使用了上述参数。

但是在我提交作业后驱动程序没有运行。它总是将工人显示为无。我已经阅读了多个博客并查看了文档以了解如何以集群模式提交作业。我为 spark-submit 调整了不同的参数,但它没有执行。值得注意的是,当我在客户端模式下提交时,它可以工作。

你能帮我解决这个问题吗?

【问题讨论】:

  • 你是如何解决这个问题的?

标签: apache-spark sparkcore


【解决方案1】:

查看您的工作人员和驱动程序的 CPU 和内存配置。

您的应用程序需要 500 Mb 的 RAM 和一个 CPU 内核来运行驱动程序,并需要 50 Mb 和一个内核来运行计算作业。因此,您需要 550 Mb 的 RAM 和两个内核。当您在集群模式下运行驱动程序时,这些资源由工作人员提供。但是每个工作人员只能使用一个 CPU 内核和 50 Mb 的 RAM。因此,worker 拥有的资源不足以执行您的驱动程序。

您必须根据工作需要为 Spark 集群分配尽可能多的资源:

Worker Cores >= Driver Cores + Executor Cores
Worker Memory >= Driver Memory + Executor Memory

也许您必须同时为驱动程序和执行程序增加内存量。尝试使用 1 Gb 内存运行 Worker,使用 512 Mb --driver-memory--executor-memory 运行驱动程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2019-12-25
    • 2020-06-14
    • 1970-01-01
    • 2022-08-22
    相关资源
    最近更新 更多