Spark核心组件
1、Driver
我们编写的Spark程序就在Driver上
Spark集群节点之一,就是你提交的Spark程序的机器
2、Master
Master是个进程
Master其实主要负责资源的调度和分配,还有集群的监控,等职责
3、Worker
Worker是个进程
主要是负责是2个:一个是用自己的内存,存储RDD的某个或者某些pardition。
另一个是启动其他进程和线程,对RDD上的Pardition进行版型的处理和计算
4、Executor
4、Task
Executor是一个进程
Executor和Task,其实就是还行负责,对RDD的Partition进行并行的计算
也就是执行我们对RDD定义的,比如:map,flatMap,reduce等算子操作
1:Driver程序启动后,会做一些初始化的操作,在这个过程中,就会发送请求到Master上,进行Spark应用程序的注册,说白了,就是让Master知道,有一个新的Spark程序要运行。
2:Master,在接收到了Spark应用程序的注册申请之后,会发送请求给Worker,进行资源的调度和分配。说白了,说穿了,资源分配就是Executor的分配。
3:Executor启动之后,会向Driver进行反注册,这样,Driver就知道,哪些Executor是为他进行服务的了。
4:Driver注册了一些Executor之后就可以开始正式执行我们的spark应用程序了。首先第一步就是,创建RDD,读取数据源(HDFS),然后HDFS文件被读取到多个worker节点中去,形成内存中的分布式数据集,也就是初始RDD。
5:Drvier会根据我们对RDD定义的操作,提交一大堆task去executor上。,Executor接收到task之后,会启动多个线程来执行task.
task就会对RDD的partition数据执行指定的算子操作,形成新的RDD的partition.