Spark概念理解

来源:互联网 发布:it岗位职责 编辑:程序博客网 时间:2024/06/01 19:37

一、整体结构

1、 Application

每一次通过Spark-submit命令提交的Jar包,都可以看成一个Spark应用程序。它是集群资源器调度的基本单位,一个应用程序对应一个驱动程序。

用户程序,如计算PI的值,统计数据报表等


2、Driver Program

驱动程序就是执行了一个Spark Application的main函数和创建Spark Context的进程,它包含了这个application的全部代码。

问题:Driver是跑在哪个节点上,对应到U服务呢?


3.Master节点
运行Master守护进程的集群节点,管理整个集群,一个集群中,只有一个Active的Master节点。Master节点有两个用途:一是应用程序的调度,对用户提交的应用程序,进行执行先后顺序的调度;二是资源调度,由于集群的资源实际是指Worker节点上的计算和内存资源,因此Master节点是对Worker节点进行资源上的调度。

问题:和YARN有什么关系?


4.Worker节点
运行Worker守护进程的集群节点,是集群资源的贡献节点,一个Worker内部可以包含多个Executor。一个集群中,Worker节点一般会有多个,并且受到Master节点的管理。

就是计算节点。


5.任务执行器(Executor)

Worker节点上执行任务的地方,一个Worker节点可能有多个Executor,每个Executor都拥有固定的核心数量和堆栈大小,并维护一个线程池,池中每一个线程用于执行一个任务。

问题:如何确定Executor个数?

具体实例:60台计算节点,处理120Executor,平均每台包含2个Excutor,可能也会有几台包含了3个,有些只包含一个。

在U服务中,固定分配Executor的CPU及内存资源,及1Cu,队列包含了Cu个数;通过选择队列可指定Executor相关信息,如A队列包含了3Cu,则会分配3个Executor。


问题:Excutor与task之间的关系?

task被分配到executor上去执行。executor可以先事先分配好,不退出,也可以每次提交任务时在去创建。U服务是事先分配好。



6.作业(Job)

一个Action对应一个作业;

RDD数据的计算是惰性的,在遇到动作操作之前,RDD内部的数据不会真正的被计算。从第一个RDD到最后一个动作RDD这一整套计算流程,称为一个作业。一个Spark应用程序会包含多个作业,但作业之间是相互独立的,因而仅靠了一个作业内部的调度过程即可。


7.阶段(Stage)

计算链内从任意一个或多个连接在一起的RDD到末尾最后一个RDD(Final RDD)内部所有分区数据被计算出来时候的状态,都可以视为一个阶段。Spark是根据Shuffle依赖来划分阶段,阶段划分后,RDD的计算链也被切断。

问题:多个Stage是否能够并发执行?


问题:shuffle是什么?会做什么?


8.任务集(Task Set)和任务(Task)

每一个阶段内部包含多个可以并发执行的任务,这里把同一个阶段内的任务汇总在一起,称为一个任务集。任务集是DAG调度器交付给任务调度器的基本单位;

task是依据Partation进行划分的,每个Partation对应一个task,一个任务可能包含了多个transfrom操作;


http://blog.csdn.net/zhumr/article/details/52518506

待续。。。。


4、stage是如何分解成task




二、RDD

1、RDD


三、shuffle

http://blog.csdn.net/zhumr/article/details/52540994

http://blog.csdn.net/hao707822882/article/details/40581515


原创粉丝点击