Apache Spark 何时以及如何创建驱动程序?

我试图了解与在集群和客户端模式下在 spark-submit 上创建驱动程序相关的事件序列

Spark-提交

假设我在我的机器上,我使用 Yarn 资源管理器进行了 spark-submit,部署模式为 cluster

现在,什么时候创建驱动程序?是在主程序执行之前吗?还是在创建 Spark 会话时?

我的理解:

  1. spark-submit bash 脚本与资源管理器交互并请求一个容器来运行主程序。
  2. 一旦容器启动,spark-submit 脚本就会在集群容器上运行主程序。
  3. 一旦主程序被执行,火花上下文就会与 为执行程序创建容器的资源管理器。

现在,如果这是一个正确的理解,那么当我们在具有集群模式的本地机器上简单地运行 python 脚本时会发生什么?

cengyicang 回答:Apache Spark 何时以及如何创建驱动程序?

https://blog.knoldus.com/understanding-the-working-of-spark-driver-and-executor/ 我无法解释它比这更好。另见https://spark.apache.org/docs/latest/submitting-applications.html

这比您的问题更能回答您的问题。非常棒的阅读。

假设用户使用“spark-submit”提交作业。

  • “spark-submit”将依次启动将执行我们代码的 main() 方法的驱动程序。
  • 驱动程序联系集群管理器并请求资源以启动 -Executors。
  • 集群管理器代表驱动程序启动执行器。
  • 一旦 Executor 启动,它们就会与 Driver 建立直接连接。
  • 驱动程序通过检查 Lineage 来确定任务总数。
  • 驱动程序创建逻辑和物理计划。
  • 生成物理计划后,Spark 将任务分配给执行器。
  • Task 在 Executor 上运行,每个 Task 在完成后将结果返回给 Driver。
  • 最后,当所有Task完成后,Driver中运行的main()方法退出,即main()方法调用sparkContext.stop()。
  • 最后,Spark 从集群管理器释放所有资源。
,

Spark 有两种部署模式:clientcluster

  • client 模式是您提交 Spark 作业的计算机驱动程序的模式。那可能是您的本地计算机,或者通常是所谓的“边缘节点”。在这种模式下,驱动程序与许多其他软件共享其资源,并且大多数时候它不是最佳和可靠的(想想你提交作业的情况,同时在计算机上运行超重的东西)

  • cluster 模式是 YARN 在集群的可用节点中选择一个节点并使其成为驱动程序的模式。所以它会尽量挑选最好的,你不必再担心它的资源了。

当我们在集群模式下在本地机器上简单地运行 python 脚本时会发生什么?

您现在可能对这个问题的答案有所了解:如果您只是在本地机器上运行 python 脚本,它将是 client 模式,spark 作业将使用该本地计算机资源作为 Spark 的一部分计算。另一方面,在 cluster 模式下,另一台计算机将作为驱动程序运行,而不是您的本地计算机。

本文链接:https://www.f2er.com/2920.html

大家都在问