spark学习笔记二

本文深入解析了Spark分布式计算的核心组件及其工作流程,并详细阐述了如何将Spark与YARN集成以实现资源高效调度。从SparkContext的初始化到任务调度与执行,再到YARN集群的交互过程,全面覆盖了Spark在大数据处理场景中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1Driver(核心是SparkContext)

1)  SparkContext:创建DAGSchedulerTaskSchedulerSchedulerBackend,在实例化的过程中Register当前程序给MasterMaster接受注册,如果没有问题,Master会为当前程序分配AppId并计算计算资源。

2) 一般情况下当通过action出发JobSparkContext会通过DAGScheduler来把Job中的RDD构成的DAG划分成不同的Stage,每个Stage内部是一系列业务逻辑完全相同但是处理数据不同的Tasks,构成了TaskSetTaskSchedulerSchedulerBackend负责具体Task的运行(遵循数据本地性)

 

2、Spark Cluster

1) Master:接受用户提交的程序并发送指令给Worker为当前程序分配计算资源,每个Worker所在节点默认为当前程序分配一个Executor,在Executor中通过线程池并发执行。

   Master通知Worker按照要求启动Executor

2) Worker Node

Worker进程,通过一个ProxyExecuorRunner的对象实例来远程启动Executorbackend进程

ExecutorBackend进程,里面有Executor

   实际在工作的时候会通过TaskRunner来封装Task,然后从ThreadPool中获取一条线程执行Task,执行完后线程被回收复用。

 

3、Task

   最后一个StageTask称为ResultTask,产生Job的结果,其他前面的Stage中的Task都是ShuffleMapTask,为下一阶段的task做数据准备,相当于MapReduce中的Mapper

 

4、过程

整个Spark程序的运行,就是DAGSchedulerJob划分成不同的Stage,提交TaskSetTaskScheduler,进而提交给Executor执行(符合数据本地性),每个Task会计算RDD中的一个Partition,基于该Partition来具体执行我们定义的一系列同一个Stage内部的函数,以此类推。。直到整个程序完成。






Spark on yarn的过程:

Step1:Spark Yarn Client上传相关的Jar和资源到HDFS

Step2 :  spark yarn client 向Resource Manager提交请求

Step3 :Resource Manager分配AppMaster 给Node Manager

Step4 :Node Manager 启动AppMaster

Step5 : AppMaster启动调度器DAG scheduler,同时向Resource Manager申请Container

Step6 :Resource Manager 分配Container给Node Manager

Step7 :Node Manager启动Container

Step8 :YarnClusterScheduler对 worker分配工作

Step9 : SparkWorker(Excecutor)从HDFS上读取分片数据




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值