Spark原理初探

1.Application:指的是用户编写的Spark应用程序/代码,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。

2.Driver:Spark中的Driver即运行上述Application的Main()函数并且创建SparkContext,SparkContext负责和ClusterManager通信,进行资源的申请、任务的分配和监控等

3.Cluster Manager:指的是在集群上获取资源的外部服务,Standalone模式下由Master负责,Yarn模式下ResourceManager负责;

4.Executor:是运行在工作节点Worker上的进程,负责运行任务,并为应用程序存储数据,是执行分区计算任务的进程;

5.RDD:Resilient Distributed Dataset弹性分布式数据集,是分布式内存的一个抽象概念;

6.DAG:Directed Acyclic Graph有向无环图,反映RDD之间的依赖关系和执行流程;

7.Job:作业,按照DAG执行就是一个作业;Job==DAG

8.Stage:阶段,是作业的基本调度单位,同一个Stage中的Task可以并行执行,多个Task组成TaskSet任务集

9.Task:任务,运行在Executor上的工作单元,一个 Task 计算一个分区,包括pipline上的一系列操作

Spark Application运行的流程如下;

1.当一个Spark应用被提交时,首先需要为这个Spark Application构建基本的运行环境,即由任务控制节点(Driver)创建一个SparkContext,
    spark-submit 执行时,构建SparkContext实例对象,需要很长时间
2.SparkContext向资源管理器注册并申请运行Executor资源;
    
3.资源管理器为Executor分配资源并启动Executor进程,Executor运行情况将随着心跳发送到资源管理器上;

其实可以发现,在命令行启动spark-shell时,做如上三件事,当读取数据,调用Action函数,触发JOb执行。

4.SparkContext根据RDD的依赖关系构建成DAG图,并提交给DAGScheduler进行解析划分成Stage,并把该Stage中的Task组成的Taskset发送给TaskScheduler。
    DAGScheduler 将每个Job的DAG图划分为Stage。
    TaskScheduler 调度执行每个Stage中所有Task任务Taskset。

5.TaskScheduler将Task发放给Executor运行,同时SparkContext将应用程序代码发放给Executor。

6.Executor将Task丢入到线程池中执行,把执行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后写入数据并释放所有资源。
    sc.stop 关闭资源

1.Spark应用被提交-->SparkContext向资源管理器注册并申请资源-->启动Executors

2.RDD-->构建DAG-->DAGScheduler划分Stage形成TaskSet-->TaskScheduler提交Task-->Worker上的Executor执行Task

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值