Spark运行基本流程
通过上一小节了解到,Spark运行架构主要由SparkContext、Cluster Manager和Worker组成,其中Cluster Manager负责整个集群的统一资源管理,Worker节点中的Executor是应用执行的主要进程,内部含有多个Task线程以及内存空间,下面通过图1深入了解Spark运行基本流程。
图1 Spark运行基本流程图
(1)当一个Spark应用被提交时,根据提交参数在相应位置创建Driver进程,Driver进程根据配置参数信息初始化SparkContext对象,即Spark运行环境,由SparkContext负责和Cluster Manager的通信以及资源的申请、任务的分配和监控等。SparkContext启动后,创建DAG Scheduler(将DAG图分解成Stage)和Task Scheduler(提交和监控Task)两个调度模块。
(2)Driver进程根据配置参数向Cluster Manager申请资源(主要是用来执行的Executor),Cluster Manager接收到应用(Application)的注册请求后,会使用自己的资源调度算法,在Spark集群的Worker节点上,通知Worker为应用启动多个Executor。
(3)Executor创建后,会向Cluster Manager进行资源及状态的反馈,便于Cluster Manager对Executor进行状态监控,如果监控到Executor失败,则会立刻重新创建。
(4)Executor会向SparkContext反向注册申请Task。
(5)Task Scheduler将Task发送给Worker进程中的Executor运行并提供应用程序代码。
(6)当程序执行完毕后写入数据,Driver向Cluster Manager注销申请的资源。