spark架构原理
Posted hugh-tan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark架构原理相关的知识,希望对你有一定的参考价值。
一、spark基础架构
spark和Hadoop的基础架构类似,采用了分布式计算中的Master-Slave模型。
Master是对应集群中的含有Master进程的节点,Slave是集群中含有Worker进程的节点。
1、物理节点逻辑
Master:作为整个集群的控制器,负责整个集群的正常运行,负责接收Client提交的作业,管理Worker,并命令Worker启动Driver和Executor;
Worker:相当于是计算节点,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Driver和Executor。
Client:作为用户的客户端负责提交应用。
2、管理程序逻辑
Driver: 一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。运行在worker,或客户端。并不是运行在master。
Executor:即真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task。
clusterManager:指的是在集群上获取资源的外部服务。目前有三种类型:1、Standalon,spark原生的资源管理,由Master负责资源的分配,2、Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架,3、Hadoop Yarn: 主要是指Yarn中的ResourceManager。
如图
二、spark作业
1、作业逻辑概念
Application: Appliction都是指用户编写的Spark应用程序,其中包括一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码。
Job: 包含多个Task组成的并行计算,往往由rdd的行动操作(非转化操作)触发生成, 一个Application中往往会产生多个Job。
Stage: 每个Job会被拆分成多组Task, 作为一个TaskSet, 其名称为Stage。Stage的划分和调度是有DAGScheduler来负责的,Stage有非最终的Stage(Shuffle Map Stage)和最终的Stage(Result Stage)两种,Stage的边界就是发生shuffle的地方。
Task: 被送到某个Executor上的工作单元,和hadoopMR中的MapTask和ReduceTask概念一样,是运行Application的基本单位,多个Task组成一个Stage,而Task的调度和管理等是由TaskScheduler负责。
DAGScheduler: 根据Job构建基于Stage的DAG,并提交Stage给TASkScheduler。 其划分Stage的依据是RDD之间的依赖的关系找出开销最小的调度方法。
TASKSedulter: 将TaskSET提交给worker运行,每个Executor运行什么Task就是在此处分配的. TaskScheduler维护所有TaskSet,当Executor向Driver发生心跳时,TaskScheduler会根据资源剩余情况分配相应的Task。另外TaskScheduler还维护着所有Task的运行标签,重试失败的Task。
总的作业流程逻辑图如下:
2、作业物理逻辑框架
2.1、Driver运行在Worker上的时候,作业流程具体如下:
客户端提交作业给Master。Master让一个Worker启动Driver,即SchedulerBackend。Worker创建一个DriverRunner线程,DriverRunner启动SchedulerBackend进程。 另外Master还会让其余Worker启动Exeuctor,即ExecutorBackend。Worker创建一个ExecutorRunner线程,ExecutorRunner会启动ExecutorBackend进程。 ExecutorBackend启动后会向Driver的SchedulerBackend注册。SchedulerBackend进程中包含DAGScheduler,它会根据用户程序,生成执行计划,并调度执行。对于每个stage的task,都会被存放到TaskScheduler中,ExecutorBackend向SchedulerBackend汇报的时候把TaskScheduler中的task调度到ExecutorBackend执行。 所有stage都完成后作业结束。
2.2、Driver运行在Client上的时候,作业流程具体如下:
参考:
https://www.cnblogs.com/sunrye/p/6504876.html
以上是关于spark架构原理的主要内容,如果未能解决你的问题,请参考以下文章