1、Client将代码提交到Driver Program;
2、Driver Program将代码转化为任务,并向Cluster Manager申请资源;
3、Cluster Manager分配比较空闲的worker Node给Driver Program;
4、Driver Program从Cluster Manager获得资源以后,就可以在分配给它的worker Node上进行计算。
注:
1、每个Application有多个Executor,每个Executor就是一个进程,且每个Executor里又有多个Task,每个Task即是一个线程。所以Spark是多进程计算,每个进程内部又是多线程,每个线程负责一个Task执行,所以Spark的计算速度快;
2、Spark是基于内存的,并且每个Executor中都会有一个Cache来缓存数据,使得Spark速度快;
3、Cluster Manager负责资源管理与任务调度,有Apache Mesos、Hadoop Yarn和SparkAlone(Spark独立部署)共3种方式。WorkerNode是SparkAlone方式下数据计算的实际节点,如果是Yarn方式,WorkerNode则称为NodeManager;
4、Executor类比于Yarn的Container容器。