04_spark运行流程
基本概念
- Application:应用程序
- Driver:main函数,创建的SparkContext。由SparkContext和ClusterManager通信进行资源申请
- Executer:某个Application运行在Worker节点的进程,负责运行某些具体的task,负责将数据存在内存或者磁盘上。
- Worker:集群中可以运行Application代码的节点。Standalone模式是slave配置的节点,Spark on Yarn就是指NodeManager节点
- Task:在Executer进程中执行任务的工作单元,多个task组成Stage
- Job:包含多个Task组成的并行计算,由Action行为触发
- Stage:每个Job会被拆分很多组Task,作为一个TaskSet,其名称为Stage
- DAGScheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler,其划分Stage的依据是RDD之间的依赖关系
- TaskScheduler:将TaskSet提交给Worker运行,每个Executor运行什么Task就是在此处分配的。
Spark的运行流程
- 构建Spark Application的运行环境(启动SparkContext),SparkContext向资源管理器(可以是Standalone、Mesos或YARN)注册并申请运行Executor资源;
- 资源管理器分配Executor资源并启动StandaloneExecutorBackend,Executor运行情况将随着心跳发送到资源管理器上;
- SparkContext构建成DAG图,将DAG图分解成Stage,并把Taskset发送给Task Scheduler。Executor向SparkContext申请Task
- Task Scheduler将Task发放给Executor运行同时SparkContext将应用程序代码发放给Executor。
- Task在Executor上运行,运行完毕释放所有资源。