为什么在应用程序运行时Spark驱动程序不运行?

时间:2020-06-13 15:44:55

标签: python-3.x apache-spark pyspark

我是一个初学者,尝试通过一些示例来了解应用程序和驱动程序的行为。我从以下开始:

  • 运行独立的集群管理器
  • 运行一个主叫./sbin/start-master.sh
  • 运行一个呼叫./sbin/start-slave.sh spark://localhost:7077的工人
  • 通过调用以下方式在客户端模式下启动测试应用程序:
./bin/spark-submit \
  --master spark://localhost:7077 \
  ./examples/src/main/python/pi.py

根据Docs

运行应用程序的main()函数并创建SparkContext的过程

我的总结是,当应用程序运行时,应该至少运行一个驱动程序。但是,我没有在主用户的Web UI中看到此信息:

  • 在职工人: 1
  • 正在使用的内核:总计4个,已使用0个
  • 正在使用的内存:总计15.0 GB,已使用0.0 B
  • 应用程序:正在运行0个,已完成1个
  • 驱动程序:正在运行,0已完成
  • 状态:有效

我不应该看到1个驱动程序正在运行或完成吗?我在下面提供了一些配置详细信息。


./ conf / spark-defaults.conf:

spark.master=spark://localhost:7077
spark.eventLog.enabled=true
spark.eventLog.dir=./tmp/spark-events/
spark.history.fs.logDirectory=.tmp/spark-events/
spark.driver.memory=5g

1 个答案:

答案 0 :(得分:2)

如果您正在运行交互式外壳程序,例如pyspark(CLI或通过IPython笔记本),默认情况下,您以client模式运行。 客户端模式不会触发驱动程序,但是cluster模式会触发。

注意:抱歉,您无法在集群模式下运行pyspark或任何其他交互式Shell。

因此,请尝试使用--deploy-mode cluster在集群模式下运行应用程序

./bin/spark-submit \
  --master spark://localhost:7077 \
  --deploy-mode cluster
  ./examples/src/main/python/pi.py
相关问题