Spark学习(1)——组件介绍

一、架构图

组件图: 

Spark学习(1)——组件介绍

架构图:

Spark学习(1)——组件介绍

 

二、组件介绍

1.Driver

driver是一个进程,我们编写的spark程序运行在driver上,由dirver进程执行,driver是作业的主进程,具有main函数,是程序的入口点,driver进程启动后,向master发送请求,进行注册,申请资源,在后面的executor启动后,会向dirver进行反注册,dirver注册了executor后,正式执行spark程序,读取数据源,创建rdd或dataframe,生成stage,提交task到executor它会运行客户端写好的main方法,并且它会创建sparkcontext对象,该对象是所有spark程序的执行入口

sparkcontext:

  • SparkContext:整个应用的上下文,控制应用的生命周期。
  • RDD:Spark的基础计算单元,一组RDD可形成执行的有向无环图RDD Graph。
  • DAG Scheduler:根据作业(task)构建基于Stage的DAG,并提交Stage给TaskScheduler。
  • TaskScheduler:将任务(task)分发给Executor执行。
  • SparkEnv:线程级别的上下文, 存储运行时的重要组件的引用。

2.Application
它就是一个应用程序,它包括了Driver端的代码逻辑和任务在执行的时候需要的资源信息。
3.clusterManager   :它既是给当前任务提供计算资源的外部服务
     standAlone:
     它是spark自带的集群模式,整个任务的资源分配由master负责
      Yarn:
Spark程序可以提交到yarn中去运行,整个任务的资源分配由ResourceManager负责。
     Mesos:
     就是一个apache开源的类似于yarn的资源调度平台
4.Master
     是个进程,它是整个spark集群的老大,它负责资源的分配。
5.Worker
是个进程,它是整个spark集群的小弟,主要负责两个:一个是用自己的内存存储RDD的某个或某些partition,另一个是启动其他进程和线程,对RDD上的partition进行处理和计算
6.Excutor
 是一个进程,它会在worker节点上启动对应的executor进程
7.task
是一个线程,具体的spark任务是在Task上运行的,它是以线程的方式运行在worker节点的executor进程中。

三、详细流程介绍

流程图:

Spark学习(1)——组件介绍

 

1、Driver进程启动之后,会进行一些初始化的操作,在这个过程中,会发送请求到master
2、Master,接收到Driver的注册之后,发送请求给Worker,进行资源的调度和分配,也就是Executor的分配
3、Worker接收到master的请求,启动Executor
4、Executor启动之后,会向Driver进行反注册
5、Driver注册了Executor之后,正式开始执行Spark程序,首先读取数据源,创建RDD
6、HDFS文件被读取到多个Worker节点,形成RDD
7、在worker上生成RDD之后,Driver会根据我们对RDD定义的操作,提交相应数量的Task到Executor上