我正在学习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的不同参数,但它没有执行。有趣的是,当我在客户机模式下提交时,它是有效的。
你能帮我解决这个问题吗?
1条答案
按热度按时间g6ll5ycj1#
看看您的worker和驱动程序的cpu和内存配置。
您的应用程序需要500 mb的ram和一个cpu内核来运行驱动程序,需要50 mb和一个内核来运行计算作业。所以你需要550MB的内存和两个内核。在群集模式下运行驱动程序时,这些资源由辅助进程提供。但是每个工人只允许使用一个cpu内核和50MB的ram。所以worker拥有的资源不足以执行驱动程序。
您必须为spark cluster分配工作所需的资源:
也许您必须增加驱动程序和执行程序的内存量。尝试用1GB内存运行worker,用512MB运行驱动程序
--driver-memory
以及--executor-memory
.