- Application:用户构建的应用程序,包括驱动程序(一个Driver功能的代码)和在集群的多个工作结点上运行的Executor代码。
- Driver:运行应用的main()函数并创建SparkContext进程。初始化SparkContext是为了准备Spark应用程序的运行环境,在Spark中由SparkContext负责与集群进行通信,进行资源的申请、任务的分配和监控等。当Worker结点中的Executor部分运行完毕后,Driver同时负责将SparkContext关闭。
- Executor:在工作结点中为Spark应用所启动的一个进程,它可以运行task,也可以在内存或者磁盘中保存数据。每一个应用都有属于自己的独立的一批Executor。
- ClusterManager:在集群上获取资源的拓展服务,目前spark主要支持三种类型—standalone,mesos,yarn。
- Worker:集群中任何可以运行Spark应用的节点。在standalone模式中指的是通过Spark的conf目录下的slave文件配置的worker节点,在spark on yarn模式中指的是nodemanager节点。
- Task:一个可以发给Executor执行的工作单元,是运行spark应用的基本单元。
- Job:由spark的action操作触发,在spark中通过runJob方法想spark集群提交job。
- Stage:每个job因为RDD之间的依赖关系被拆分成多个task的集合,即stage。stage是由DAGScheduler来完成的。stage有Shuffle Map Stage和Result Stage两种。
- DAGScheduler:面向stage的任务调度器,负责接收spark应用提交的job,根据RDD的依赖关系划分stage,并提交stage给TaskScheduler。
- TaskScheduler:面向task的任务调度器,它接收DAGScheduler提交过来的TaskSets,然后把一个个task提交到work节点运行,每个Executor运行什么task也是在此处分配的。
- RDD:spark的编程模型,它被表示为已被分区,被序列化的,不可变的,有容错机智的,,并且能够并行操作的数据集合。