架构组件基本概念:
Spark集群中的Master负责集群整体资源管理和调度,Worker负责单个节点的资源管理。Driver程序是应用逻辑执行的起点,而多个Executor用来数据进行并行处理。
Spark的构成:
-ClusterManager:在standalone模式中即为,Master:主节点,控制整个集群,监控Worker。在YARN模式中为资源管理器。
-Worker:从节点,负责控制计算节点,启动Excutor或Driver。在YARN模式中为NodeManager,负责计算节点的控制。
-Driver:运行Application的main()函数并且创建SparkContext。一个应用程序的主控。负责一个应用程序的运行和调度。
-Executor:执行器,是为某个Application运行在worker node上的一个进程,启动线程池运行任务上。每个Application拥有独立的一组executors。
-SparkContext:整个应用的上下文,控制着应用的整个生命周期。
-RDD:Spark的基本计算单元,一组RDD形成执行的有向无环图RDD Graph。
-DAG Scheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler。
-TaskScheduler:将Task分发给Executor执行。
-SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。
架构图:
集群执行机制:
Client提交应用,Master找到一个Worker启动Driver,Driver向Master或者资源管理器申请资源(例如:申请CPU和内存),之后将应用(打包的jar包)转化为RDD Graph,再由DAGScheduler将RDD Graph转化为Stage的有向无环图提交给TaskScheduler,由TaskScheduler提交任务给Executor进行执行。这样每一轮次执行完,将会将数据shuffle到磁盘,执行下一轮的Stage。经过多轮的Stage的执行,最终将结果在输出spark。任务执行的过程中其他组件再协同工作确保整个应用顺利执行。