一、Spark主要角色介绍
1、Spark主要角色
MasterWorkerDriverExecutor 2、yarn主要角色
资源管理层面任务计算层面 二、Spark提交任务流程
1、Spark On Standalone2、Spark On Yarn
client模式cluster模式
2、Spark On Yarn原理
本篇主要介绍两块内容:
一、Spark集群主要角色以及每个角色的主要功能,包含Spark自身角色以及Spark运行在Yarn(Spark on Yarn)上的角色。
二、Spark运行时任务提交的流程。
Spark Application在集群上运行时,主要由四个部分组成,分别是:Master、Worker、Driver、Executor
1、Spark主要角色 Master集群的大管家,负责集群的资源管理和分配
Worker单个机器的管家,负责在单个服务器上提供运行容器,管理当前服务器资源
Driver单个Spark任务的管理者,管理Executor上的任务执行和任务的分配。类似Yarn的ApplicationMaster。
Executor具体干活的进程,Spark的工作任务(Task)都由Executor来负责执行。
yarn的主要角色有四个,从资源管理层面和任务计算层面两个层面去看
资源管理层面集群的资源管理者:ResourceManager单机的资源管理者:NodeManager 任务计算层面
单任务管理者:Applicationmaster单任务执行者:Task(容器内计算框架的工作角色)
二、Spark提交任务流程
1、Spark On Standalone
spark集群启动后,Worker向Master注册信息
spark-submit命令提交程序后,driver和application也会向Master注册信息
创建SparkContext对象:主要的对象包含DAGScheduler和TaskScheduler
Driver把Application信息注册给Master后,Master会根据App信息去Worker节点启动Executor
Executor内部会创建运行task的线程池,然后把启动的Executor反向注册给Dirver
DAGScheduler:负责把Spark作业转换成Stage的DAG(Directed Acyclic Graph有向无环图),根据宽窄依赖切分Stage,然后把Stage封装成TaskSet的形式发送个TaskScheduler; 同时DAGScheduler还会处理由于Shuffle数据丢失导致的失败;
TaskScheduler:维护所有TaskSet,分发Task给各个节点的Executor(根据数据本地化策略分发Task),监控task的运行状态,负责重试失败的task;
所有task运行完成后,SparkContext向Master注销,释放资源;
Spark On Yarn是由两种运行模式的,一种是Cluster模式,一种是Client模式。这两种模式的区别就是Driver的运行位置。
Cluster模式:Driver运行在Yarn容器的内部,和ApplicationMaster在同一个容器内部。负责申请资源并监控task运行状态和重试失败的task,当用户提交了作业之后就可以关掉Cluster,作业会继续在yarn中运行Client模式:Driver运行在客户端进程中,比如运行在Spark-submit程序的进程中,client不能离开。 client模式
client向ResouceManager申请启动ApplicationMaster,同时在SparkContext初始化中创建DAGScheduler和TaskScheduler
ResouceManager收到请求后,在一台NodeManager中启动第一个Container(容器)运行ApplicationMaster
Dirver中的SparkContext初始化完成后与ApplicationMaster建立通讯,ApplicationMaster向ResourceManager申请Application的资源
一旦ApplicationMaster申请到资源,便与之对应的NodeManager通讯,启动Executor,并把Executor信息反向注册给Dirver
Dirver分发task,并监控Executor的运行状态,负责重试失败的task
运行完成后,Client的SparkContext向ResourceManager申请注销并关闭自己
yarn-cluster模式中,当用户向yarn提交应用程序后,yarn将分为两阶段运行该应用程序:
第一个阶段是把Spark的Dirver作为一个ApplicationMaster在yarn中启动;
第二个阶段是ApplicationMaster向ResourceManager申请资源,并启动Executor来运行task,同时监控task整个运行流程并重试失败的task;
Spark的Master角色由Yarn的ResourceManager担任。
Worker角色由Yarn的NodeManager担任。
Driver角色运行在Yarn容器内或提交任务的客户端进程中,而真正干红的Executor运行在Yarn提供的容器内。
一句话总结:SparkOnYarn就是让Spark任务运行在Yarn的容器内部,资源管理交给Yarn的ResourceManager和NodeManager代替
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)