(1)名词解释:
概念 |
解释 |
Application | 用户基于spark构建的应用程序,在集群上运行时,包含一个driver和多个executor Driver |
Driver program | 一个进程,执行Application的main方法,并创建SparkContext |
Cluster program | 1个额外的服务,用来申请集群的资源(standlone manager,Messos,yarn), 通过--master参数动态指定 |
Deploy mode | 辨别driver进程启动在哪里?
|
Worker node | 进群上任何可以运行application代码的节点
|
Executor | 在worker节点上启动的一个进程,它能够运行tasks(1个executor可运行多个task),存储数据;每个application有自己的独立的executor,不同的application之间的executor是独立的 |
Task | 作业发到executor上执行的一个工作单元 |
Job | 1个spark action就是一个spark job,1个job由多个task组成 |
Stage | 每个job被划分为多个tasks的集合,这个集合就叫stage,stage之间互相依赖(类似于MapReduce中的map 和 reduce阶段) |
(2)对应关系:
1个job = n个stages = n个tasks = 1个action
(3)总结:
- 1个application由1个driver进程+多个executor进程组成
- driver是一个进程,运行main方法,并创建SparkConext
- executor也是一个进程用来处理tasks,存储数据,每个application的有自己的executors
- task是发送到executor上的一个最小的工作单元
- 1个job对应1个action,1个job会产生多个stage,1个stage对应多个task,提交的时候是以stage为单位根据satge id从后往前进行提交,就是把stage中所有的tasks发送到executor上去执行
- 如果是standlone模式,executor运行在worker上,如果是yarn模式,executor运行在nodemanager的container上,提交时可以通过 --master 和 --deploy-mode 指定运行模式和以及使用客户端还是集群
- spark applications是一组独立的进程的集合,通过运行在driver中的sparkconext协调,跨spark应用程序之间数据数不共享的,除非使用第三方存储系统(hdfs,s3,alluxio等)