Spark程序执行逻辑迷你版

 

Driver就是自己写的程序,里面有一个main方法,main方法划分DAG,形成Task,再把Task发出去
DAGScheduler的功能,将rdd转换逻辑切分stage,生成taskset

然后模拟taskScheduler的功能,将这些task发到Executor上去执行(真正的发送逻辑spark submit
进程启动Driver,然后Driver会找Executor,将Executor启动起来,然后Executor会向Driver反向注册
是动态获取的,这样Driver会持有Executor的地址,Executor知道Driver在哪里,Driver也知道Executor在哪里)

注意,如果划分有两个stage,是会有两个taskset的

然后在虚拟机上,上传打好的jar包,这样就会看到三个节点有三个Executor启动,然后用submit进程启动,里面调用Driver
发布任务到Executor,然后三个Executor就会执行对应自己分区的任务

当您提交一个Spark程序时,它经历以下流程: 1. 初始化SparkContext:在程序开始执行之前,需要初始化SparkContext对象。SparkContext是与集群交互的主要入口点,负责连接到集群管理器(如YARN、Mesos或Standalone)并分配计算资源。 2. 创建RDD:在程序中,您将定义一系列操作来处理数据。Spark的核心数据结构是弹性分布式数据集(RDD),它代表着分布在集群中的数据集合。您可以通过读取文件、从内存集合创建、通过转换其他RDD等方式来创建RDD。 3. 转换操作:一旦创建了RDD,您可以对其进行各种转换操作。转换操作是惰性执行的,意味着它们只是记录了要在RDD上进行的操作序列,而不会立即执行。常见的转换操作包括map、filter、reduceByKey等。 4. 行动操作:当需要从RDD获取结果时,需要执行行动操作。行动操作会触发Spark作业的执行,并将结果返回给驱动程序。常见的行动操作包括collect、count、reduce等。 5. 任务划分和调度:一旦执行行动操作,Spark将根据转换操作的依赖关系将作业划分为一系列任务。每个任务都会被分配给集群中的可用计算资源,并由集群管理器进行调度执行。 6. 任务执行:每个任务在集群中的工作节点上被执行。它们会读取输入数据、应用转换操作并生成中间结果。这些中间结果可能会被缓存在内存中,以便后续任务可以直接使用。 7. 结果返回:当所有任务都完成后,Spark将把最终结果返回给驱动程序。这些结果可以直接在驱动程序中处理,也可以存储到外部系统(如HDFS、数据库等)中。 8. 清理资源:当程序执行完毕时,SparkContext会负责释放所使用的资源,并与集群管理器断开连接。 需要注意的是,Spark程序的执行是分布式的,它可以在一个集群中的多个计算节点上并行处理数据。Spark会自动管理任务的划分和调度,并尽可能最大化地利用集群中的计算资源来提高执行效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

{BOOLEAN}

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值