spark学习笔记
1. 集群部署方式
standalone
Mesos
Yarn
K8s
2. 基本概念
- Application:指的是用户编写的Spark应用程序,包含了含有一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码。
- Driver:运行Application的main函数并创建SparkContext,SparkContext的目的是为了准备Spark应用程序的运行环境。SparkContext负责资源的申请、任务分配和监控等。当Executor运行结束后,Driver负责关闭SparkContext;
- Job:一个Application可以产生多个Job,其中Job由Spark Action触发产生。每个Job包含多个Task组成的并行计算。
- Stage:每个Job会拆分为多个Task,作为一个TaskSet,称为Stage;Stage的划分和调度是由DAGScheduler负责的。Stage分为Result Stage和Shuffle Map Stage;
- Task:Application的运行基本单位,Executor上的工作单元。其调度和 管理又TaskScheduler负责。
- RDD:Spark基本计算单元,是Spark最核心的东西。表示已被分区、被序列化、不可变的、有容错机制的、能被并行操作的数据集合。
- DAGScheduler:根据Job构建基于Stage的DAG,划分Stage依据是RDD之间的依赖关系。
- TaskScheduler:将TaskSet提交给Worker运行,每个Worker运行了什么Task于此处分配。同时还负责监控、汇报任务运行情况等。
3. 基于ZookerKeep的HA来解决standalone的单机故障问题