首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spark executor 模块③ - 启动 executor

本文为 Spark 2.0 源码分析笔记,由于源码只包含 standalone 模式下完整的 executor 相关代码,所以本文主要针对 standalone 模式下的 executor 模块,文中内容若不特意说明均为...,它在接收到 driver 回应的 RegisteredExecutor 消息后,会创建一个 Executor。...至此,Executor 创建完毕(Executor 在 Mesos、YARN、Standalone 模式下都是相同的,不同的只是资源的分配方式) driver 端调用 CoarseGrainedSchedulerBackend.DriverEndpoint...进程退出后,向 worker 发送 ExecutorStateChanged(Executor 状态变更为 EXITED) 消息通知其 Executor 退出 其中,在创建、启动或等待 CoarseGrainedExecutorBackend...方法来结束 CoarseGrainedExecutorBackend 进程 至此,我们完成了对 executor 启动过程的分析。

41310
您找到你想要的搜索结果了吗?
是的
没有找到

spark系列——Executor启动过程分析

,轮询可用的work 分配给 Executor 所需的 CPU 核数,即你指定的--executor-cores , 以及内存,即你指定的--executor-memory, 如果 spark.deploy.spreadOut...才会继续去寻找下一个可用work 重复 1 3.直到满足该任务需要的资源,或者集群资源消耗完。 5.spark 1.4.2 资源分配的一个bug?...在某一集群中有4 个 Worker 节点,每个节点拥有16个 CPU 核数, 其中设置了 spark.cores.max = 48 和 spark.executor.cores = 16, 如果...48, 但却没有满足executor启动的最小cores 16, 所以将没有 Executor 能够启动,参见 SPARK -8881问题说明。...通过以上几个问题,大概也能了解 executor 在worker端启动的整个流程了, 本文主要是从源码角度挖掘的信息,如有不对的地方,麻烦指出,谢谢!

73911

Spark executor模块① - 主要类以及创建 AppClient

本文为 Spark 2.0 源码分析笔记,由于源码只包含 standalone 模式下完整的 executor 相关代码,所以本文主要针对 standalone 模式下的 executor 模块,文中内容若不特意说明均为...standalone 模式内容 在 executor 模块中,最重要的几个类(或接口、trait)是: AppClient:在 Standalone 模式下的实现是 StandaloneAppClient...RegisteredApplication:application 已成功注册 ApplicationRemoved:application 已移除 ExecutorAdded:有新增加的 Executor...为执行 Application 的 tasks 申请资源 KillExecutors:StandaloneAppClient 通过 ClientEndpoint 向 master 发送消息来 kill executor...:接收到 executor 心跳信息 def executorLost(executorId: String, reason: ExecutorLossReason):处理 executor lost

22810

Spark executor 模块② - AppClient 向 Master 注册 Application

本文为 Spark 2.0 源码分析笔记,由于源码只包含 standalone 模式下完整的 executor 相关代码,所以本文主要针对 standalone 模式下的 executor 模块,文中内容若不特意说明均为...standalone 模式内容 前一篇文章简要介绍了 Spark 执行模块中几个主要的类以及 AppClient 是如何被创建的,这篇文章将详细的介绍 AppClient 向 Master 注册...其中 appDescription: ApplicationDescription 成员描述了要注册并启动一个怎么样的 Application(主要包含属性及资源信息),其定义如下: private[spark...在这个基本目录下,Spark为每个 Application 创建一个子目录。各个应用程序记录日志相应的目录。...")) { override def toString: String = "ApplicationDescription(" + name + ")" } private[spark

31020

Spark闭包 | driver & executor程序代码执行

Spark为了执行任务,会将RDD的操作分解为多个task,并且这些task是由executor执行的。...闭包函数从产生executor执行经历了什么? 首先,对RDD相关的操作需要传入闭包函数,如果这个函数需要访问外部定义的变量,就需要满足一定条件(比如必须可被序列化),否则会抛出运行时异常。...闭包函数在最终传入executor执行,需要经历以下步骤: 1.driver通过反射,运行时找到闭包访问的变量,并封装成一个对象,然后序列化该对象 2.将序列化后的对象通过网络传输到worker节点...executor是真正执行task地方,而task执行离不开具体的数据,这些task运行的结果可以是shuffle中间结果,也可以持久化到外部存储系统。一般都是将结果、状态等汇集driver。...但是,目前executor之间不能互相通信,只能借助第三方来实现数据的共享或者通信。 编写的Spark程序代码,运行在driver端还是executor端呢?

1.5K20

重要|Spark driver端得到executor返回值的方法

有人说spark的代码不优雅,这个浪尖就忍不了了。实际上,说spark代码不优雅的主要是对scala不熟悉,spark代码我觉得还是很赞的,最值得阅读的大数据框架之一。...今天这篇文章不是为了争辩Spark 代码优雅与否,主要是讲一下理解了spark源码之后我们能使用的一些小技巧吧。...spark 使用的时候,总有些需求比较另类吧,比如有球友问过这样一个需求: 浪尖,我想要在driver端获取executor执行task返回的结果,比如task是个规则引擎,我想知道每条规则命中了几条数据...这样就可以在executor端将结果累加然后在driver端使用,不过具体实现也是很麻烦。大家也可以自己琢磨一下下~ 那么,浪尖就给大家介绍一个比较常用也比较骚的操作吧。...浪尖在这里直接上案例了: import org.apache.spark.

2K40

Hello Spark! | Spark,从入门精通

欢迎阅读美图数据技术团队的「Spark,从入门精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,欢迎大家持续关注:) 什么是 Spark?...Spark 提供两种方式进行故障恢复:通过数据的血缘关系再执行一遍前面的处理;Checkpoint 将数据集存储持久存储中。...Spark 应用程序的入口负责调度各个运算资源,协调各个 Worker Node上 的 Executor。...根据用户输入的参数会产生若干个 workr,workr 节点运行若干个 executor,一个 executor 是一个进程,运行各自的 task,每个 task 执行相同的代码段处理不同的数据。...图 7 描述了一个 Spark 程序,从 HDFS 上读取数据产生 RDD-A 然后 flatmap 操作到 RDD-B,读取另一部分数据的RDD-C,然后 map 操作的 RDD-D,RDD-D

54201

Spark on Yarn | Spark,从入门精通

欢迎阅读美图数据技术团队的「Spark,从入门精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,欢迎大家持续关注:) 往期直通车:Hello...Worker 是 Spark 的工作节点,向 Master 汇报自身的资源、Executeor 执行状态的改变,并接受 Master 的命令启动 Executor 或 Driver。...ExecutorSpark 的工作进程,由 Worker 监管,负责具体任务的执行。...之后 App Master 申请 Container 并启动,Spark Driver 在 Container 上启动 Spark Executor,并调度 Spark Task 在 Spark Executor...App Master 申请完 Container 之后同样也是由 Spark Driver 去启动 Spark Executor,执行任务。 那为什么使用 Yarn 作为 Spark 的资源管理呢?

89310

Spark Streaming | Spark,从入门精通

欢迎阅读美图数据技术团队的「Spark,从入门精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,欢迎大家持续关注:) 往期直通车:Hello...由 Receiver 的总指挥 ReceiverTracker 分发多个 job,多个 executor 上分别启动 ReceiverSupervisor 实例; 每个 ReceiverSupervisor...Spark Streaming 对源头块数据的保障,分为 4 个层次,全面、相互补充,又可根据不同场景灵活设置: 热备:热备是指在存储块数据时,将其存储executor、并同时 replicate...另外一个 executor 上去。...*1.5.2 update 这已经是默认了 冷备:冷备是每次存储块数据前,先把块数据作为 log 写出到 WriteAheadLog 里,再存储executor

65730

Hello Spark! | Spark,从入门精通

欢迎阅读美图数据技术团队的「Spark,从入门精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,欢迎大家持续关注:) / 什么是 Spark...Spark 提供两种方式进行故障恢复:通过数据的血缘关系再执行一遍前面的处理;Checkpoint 将数据集存储持久存储中。...Spark 应用程序的入口负责调度各个运算资源,协调各个 Worker Node上 的 Executor。...根据用户输入的参数会产生若干个 workr,workr 节点运行若干个 executor,一个 executor 是一个进程,运行各自的 task,每个 task 执行相同的代码段处理不同的数据。...图 7 图 7 描述了一个 Spark 程序,从 HDFS 上读取数据产生 RDD-A 然后 flatmap 操作到 RDD-B,读取另一部分数据的RDD-C,然后 map 操作的 RDD-D,RDD-D

73621

Spark on Yarn | Spark,从入门精通

欢迎阅读美图数据技术团队的「Spark,从入门精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,欢迎大家持续关注:) 往期直通车:Hello...的输入参数向 NameNode 请求包含这些文件数据块的 DataNode 节点列表; 4.JobTracker 确定 Job 的执行计划:确认 Map、Reduce 的 Task 数量,并分配 Task 离数据块最近的节点上执行...Executor 是 Spark 的工作进程,由 Worker 监管,负责具体任务的执行。...之后 App Master 申请 Container 并启动,Spark Driver 在 Container 上启动 Spark Executor,并调度 Spark Task 在 Spark Executor...App Master 申请完 Container 之后同样也是由 Spark Driver 去启动 Spark Executor,执行任务。 那为什么使用 Yarn 作为 Spark 的资源管理呢?

83800

Hello Spark! | Spark,从入门精通

欢迎阅读美图数据技术团队的「Spark,从入门精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,欢迎大家持续关注:) / 什么是 Spark...Spark 提供两种方式进行故障恢复:通过数据的血缘关系再执行一遍前面的处理;Checkpoint 将数据集存储持久存储中。...Spark 应用程序的入口负责调度各个运算资源,协调各个 Worker Node上 的 Executor。...根据用户输入的参数会产生若干个 workr,workr 节点运行若干个 executor,一个 executor 是一个进程,运行各自的 task,每个 task 执行相同的代码段处理不同的数据。...图 7 图 7 描述了一个 Spark 程序,从 HDFS 上读取数据产生 RDD-A 然后 flatmap 操作到 RDD-B,读取另一部分数据的RDD-C,然后 map 操作的 RDD-D,RDD-D

75630

Spark Streaming | Spark,从入门精通

欢迎阅读美图数据技术团队的「Spark,从入门精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,欢迎大家持续关注:) 往期直通车:Hello...由 Receiver 的总指挥 ReceiverTracker 分发多个 job,多个 executor 上分别启动 ReceiverSupervisor 实例; 每个 ReceiverSupervisor...Spark Streaming 对源头块数据的保障,分为 4 个层次,全面、相互补充,又可根据不同场景灵活设置: 热备:热备是指在存储块数据时,将其存储executor、并同时 replicate...另外一个 executor 上去。...*1.5.2 update 这已经是默认了 冷备:冷备是每次存储块数据前,先把块数据作为 log 写出到 WriteAheadLog 里,再存储executor

99420
领券