Spark On Standalone框架
1 master和worker节点
在standalone模式下,一个集群有一个master节点和多个worker节点。
master负责管理worker,客户端会把应用提交到master节点运行。
worker节点与master节点通信,并且管理executor进程。
2 driver和executor进程
driver进程就是应用的main()函数并且构建sparkContext对象,当我们提交了应用到master之后,便会启动一个对应的driver进程,下面说一说driver和executor会做哪些事。
什么是Driver?
- 运行应用程序的main函数
- 创建SparkContext,SparkContext用来连接Spark集群
- 划分RDD并生成有向无环图(DAGScheduler)
- 生成并发送task到executor(taskScheduler)
driver运行在master上。driver首先会向master申请spark应用所需的资源,也就是executor,然后master会根据spark应用所设置的参数在各个worker上分配一定数量的executor,每个executor都占用一定数量的cpu和memory。在申请到应用所需的资源以后,driver就开始调度和执行我们编写的应用代码了。driver进程会将我们编写的spark应用代码拆分成多个stage,并为每个stage创建一批tasks,然后将这些tasks分配到各个executor中执行。
executor进程在worker节点上,一个worker可以有多个executor。每个executor持有一个线程池,每个线程可以执行一个task,executor执行完task以后将结果返回给driver。RDD 是直接缓存在executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。
Spark On Yarn 框架
概念
- Spark on Yarn的两种运行模式:cluster和client;
- 一句话概述两种的区别就是Spark driver到底运行再什么地方
- In cluster mode:Driver运行在NodeManage的AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行。
- In client mode:Driver运行在Client上,通过ApplicationMaster向RM获取资源。本地Driver负责与所有的executor container进行交互