spark学习笔记二

来源:互联网 发布:深圳市在园儿童数据 编辑:程序博客网 时间:2024/04/29 15:01

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上读取分片数据




0 0
原创粉丝点击