Spark架构
Spark架构采用了分布式计算中的Master-Slave模型。集群中运行Master进程的节点称为Master,同样,集群中含有Worker进程的节点为Slave。Master负责控制整个集群的运行;Worker节点相当于分布式系统中的计算节点,它接收Master节点指令并返回计算进程到Master;Executor负责任务的执行;Client是用户提交应用的客户端;Driver负责协调提交后的分布式应用。
在Spark应用的执行过程中,Driver和Worker是相互对应的。Driver是应用逻辑执行的起点,负责Task任务的分发和调度;Worker负责管理计算节点并创建Executor来并行处理Task任务。Task执行过程中所需的文件和包由Driver序列化后传输给对应的Worker节点,Executor对相应分区的任务进行处理。
下面介绍Spark架构中的组件。
1)Client: 提交应用的客户端。
2)Driver: 执行Application中的main函数并创建SparkContext。
3) ClusterManager: 在YARN模式中为资源管理器。在Standalone模式中为Master(主节点),控制整个集群。
4) Worker: 从节点,负责控制计算节点。启动Executor或Driver,在YARN模式中为NodeManager。
5) Executor: 在计算节点上执行任务的组件。
6) SparkContext: 应用的上下文,控制应用的生命周期。
7) RDD: 弹性分布式数据集,Spark的基本计算单元,一组RDD可形成有向无环图。
8) DAG Scheduler: 根据应用构建基于Stage的DAG,并将Stage提交给Task Scheduler。
9) Task Scheduler: 将Task分发给Executor执行。
Spark架构揭示了Spark的具体流程如下:
1) 用户在Client提交了应用。
2) Master找到Worker,并启动Driver。
3) Driver向资源管理器(YARN模式)或者Master(Standalone模式)申请资源,并将应用转化为RDD Graph。
4) DAG Scheduler将RDD Graph转化为Stage的有向无环图提交给Task Scheduler。
5) Task Scheduler提交任务给Executor执行。