繁体   English   中英

spark执行器是如何创建的?

[英]How are spark executors created?

我试图了解 spark executors 是如何启动的以及由谁启动的。 我的理解是 Driver 将负责一切,尤其是SparkSession.builder将创建与集群管理器和执行器的连接。 似乎构建器还将配置执行器。 这是否意味着执行程序是在builder.getOrCreate()期间由驱动程序启动的?

builder.config("spark.executor.cores", 5)
builder.config("spark.executor.memory", "1g")

在此处输入图像描述

为此,您需要了解集群管理器的作用。 简而言之(这里我将 YARN 视为集群管理器),

  1. YARN 通过在所有节点上运行的资源管理器和节点管理器工作。 资源管理器管理整个集群使用的资源,节点管理器启动和监控容器。 调度程序和应用程序管理器是资源管理器的两个组件。

  2. 调度器:根据应用程序对资源的需求进行调度。 YARN 提供了很少的调度器可供选择,它们是公平和容量调度器。

  3. Application Manager:它管理集群中 Application Master 的运行,并在 Application Master Container 发生故障时帮助重新启动它。 此外,它还承担接受作业提交的责任。

  4. 节点管理器:负责每个数据节点中任务的执行。 它主要管理由资源管理器分配的应用程序容器。 节点管理器通过创建请求的容器进程来启动容器,并且它还按照资源管理器的要求杀死容器

  5. Application Master:它监视任务的执行并管理在集群上运行的应用程序的生命周期。 单个 Application Master 在提交到框架时与作业相关联。 它的主要职责是与资源管理器协商资源。 它与节点管理器一起监视和执行任务

现在,当您将 Spark 应用程序提交到集群时

  1. First Yarn 在其中一个数据节点中启动用于运行应用程序主控的容器
  2. 如果您在集群模式下提交 spark 作业,您的驱动程序也将在 application master 的同一容器中运行。 在客户端模式下,它将位于您的边缘节点上。 此驱动程序容器将具有通过 spark.driver.memory 和 spark.driver.cores 给出的资源要求
  3. 一旦驱动程序开始运行,Application Master 将与资源管理器协商其他执行器资源需求,并且资源管理器利用调度程序和节点管理器在可用的工作节点中启动相应的执行器容器。

我有时会写一篇关于此的博客,它可能会帮助您详细了解它:

http://pathirippilly.blogspot.com/2018/12/understanding-spark-architecture-in.html

互联网上也有很多优秀的材料。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM