@Author : Spinach | GHB
@Link : http://blog.csdn.net/bocai8058
前言
Spark中存在大量的角色和阶段,如Master\Worker、Driver\Executor、Job\Stage\Task等,本节主要是讲解这些角色的含义和之间的关系。
角色概念
角色名称 | 解释 |
---|
Master | 常驻master守护进程,负责管理worker节点,从master节点提交应用。 | Worker | 常驻worker守护进程,与master节点通信,并且管理executor进程。运行一个或多个Executor进程,相当于计算节点。 | Client | 用户提交作业的客户端 | Driver | 负责控制一个应用的执行,运行Application的main函数和初始化SparkContext,Driver将Task和Task所依赖的file和jar(序列化后)传递给对应的Worker机器运行 | Executor | executor进程宿主在worker节点上,一个worker可以有多个executor。每个executor持有一个线程池,每个线程可以执行一个task,executor执行完task以后将结果返回给driver,每个executor执行的task都属于同一个应用。此外executor还有一个功能就是为应用程序中要求缓存的 RDD 提供内存式存储,RDD 是直接缓存在executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。 | Job | action的触发会生成一个job,Job会提交给DAGScheduler,分解成Stage | Stage | DAGScheduler 根据shuffle将job划分为不同的stage,同一个stage中包含多个task,这些tasks有相同的 shuffle dependencies。 | Task | 被送到executor上的工作单元,task简单的说就是在一个数据partition上的单个数据处理流程。 | Cluster Manager | 在集群上获取资源的外部服务 (例如:Standalone、Mesos、Yarn) | SparkContext | 整个应用的上下文,控制程序的生命周期 | DAGScheduler | 根据Job构建基于Stage的DAG的工作流,并提交Stage给TaskScheduler | TaskScheduler | 将task发给Executor执行 | SparkEnv | 线程级别的上下文,存储运行时的重要组件的引用 |
之间的关系图解
也可参考《Spark on Yarn调用执行流程图解(包含stage流程)》
在了解这些基本角色之后,可以进行下面的进级阶段学习了,可参考如下:
《Spark原理框架和作业执行流程》 《Spark的shuffle过程详解》 《Spark算子分类详解》
更多可查看【博客spark分组】
引用: https://blog.csdn.net/u012137473/article/details/84965567 https://blog.csdn.net/hongmofang10/article/details/84587262 https://blog.csdn.net/mys_35088/article/details/80864092?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control https://blog.csdn.net/hjw199089/article/details/77938688?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.pc_relevant_baidujshouduan&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.pc_relevant_baidujshouduan
|