spark驱动程序没有分配任何工作进程

11dmarpk  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(312)

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

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

具有1个主节点和2个工作节点的spark群集正在作为独立群集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文档并查看了博客之后使用了上述参数。
但是在我提交作业之后,驱动程序就不运行了。它总是将worker显示为none。我已经阅读了多个博客并查看了文档,以了解如何在集群模式下提交作业。我调整了spark submit的不同参数,但它没有执行。有趣的是,当我在客户机模式下提交时,它是有效的。
你能帮我解决这个问题吗?

g6ll5ycj

g6ll5ycj1#

看看您的worker和驱动程序的cpu和内存配置。
您的应用程序需要500 mb的ram和一个cpu内核来运行驱动程序,需要50 mb和一个内核来运行计算作业。所以你需要550MB的内存和两个内核。在群集模式下运行驱动程序时,这些资源由辅助进程提供。但是每个工人只允许使用一个cpu内核和50MB的ram。所以worker拥有的资源不足以执行驱动程序。
您必须为spark cluster分配工作所需的资源:

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

也许您必须增加驱动程序和执行程序的内存量。尝试用1GB内存运行worker,用512MB运行驱动程序 --driver-memory 以及 --executor-memory .

相关问题