Spark的整体流程为:Client提交应用,Master找到一个Worker启动Driver,Driver向Master或者资源管理器申请资源,之后将应用转化为RDD Graph,再由DAGScheduler将RDD Graph转化为Stage的有向无环图提交给TaskScheduler,由TaskScheduler提交任务给Executor执行。在任务执行的过程中,其他组件协同工作,确保整个应用顺利执行。
Client:作为用户的客户端负责提交应用。
Master:作为整个集群的控制器,负责整个集群的正常运行。
Worker:相当于计算节点,接收主节点命令并进行状态汇报。
Driver:负责控制一个应用程序,其运行Application的main()函数,并创建SparkContext。
SparkContext:是整个应用的上下文,控制应用的生命周期。
RDD:Spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph。
DAGScheduler:根据作业(Job)构建基于Stage的DAG,并提交Stage给TaskScheduler。
TaskScheduler:将任务分发给Executor。
Executor:执行器,在worker node上执行任务的组件,用于启动线程池运行任务。
Spark框架中其他组件的作用:
SparkConf:负责存储配置信息。
MetricsSystem:监控运行时性能指标信息。
BlockManager:负责存储管理,负责创建和查找block。
BrocastManager:负责广播变量的控制与元信息的存储。
Progress is not created by contented people.