Spark学习笔记一:运行流程

最近在看《图解Spark:核心原理与技术实践》,为了便于自己温故而知新,已经检验理解是否到位,以下是记录的学习笔记。

我的一般学习思路是首先学会用,再来深入学习。所以,首先由Spark的运行流程切入:

一、运行流程

从Spark的运行流程入手,学习了解Spark的核心组成。下面是Spark的一个基本运行流程

在这里插入图片描述
整个过程包括:提交作业、划分调度阶段(78)、提交调度阶段(9)、提交执行任务(1012)、获取执行结果(13)

  1. 构建Spark application运行环境
    a.Spark Application是用户编写的Spark应用程序
  2. SparkContext向资源管理器(Cluster Manager)注册
    a. SparkContext是由Driver运行上述Application中main()函数创建的,其中SparkContext的作用有
    在这里插入图片描述
    b. 资源管理器(Cluster Manager):指在集群上获取资源的外部服务,目前有:
    在这里插入图片描述
  3. ​SparkContext向资源管理器申请运行Executor
  4. 资源管理器分配Executor
  5. 资源管理器启动Executor
  6. Executor发送心跳到资源管理器
    a. Executor是Application运行在Worker节点的一个进程,负责运行Task,并负责将数据存在内存或磁盘上。每个Application都有各自独立的一批Executor
    b. Worker计算节点,集群中任务可以运行Application代码的节点

2-6步骤如下图所示:
在这里插入图片描述
DAGScheduler调度阶段
7. SparkContext构建成DAG图
a. DAG(有向无环图),反应RDD之间的依赖关系,如下图所示:
在这里插入图片描述
8. DAGScheduler将DAG图分解成Stage(TaskSet)
9. DAGScheduler将将Stage(TaskSet)发送给TaskScheduler
a. 基于DAG划分Stage,负责将作业拆分成不容阶段的具有依赖关系的多批任务。一个SparkContext对应创建一个DAGScheduler(有向无环图调度器)
b. Stage的划分依据就是宽依赖
c. DAGScheduler的作用有:
在这里插入图片描述
TaskScheduler调度阶段

  1. Executor向SparkContext申请Task
  2. TaskScheduler将Task发放给Executor运行
  3. 同时,SparkContext将应用程序代码发放给Executor
  4. Task在Executor上运行,运行完毕释放所有资源
    a. TaskScheduler任务调度器,将Taskset提交给Worker执行并监控,完成的任务有:
    在这里插入图片描述

二、任务调度总体诠释

在这里插入图片描述
Spark 中出现的几个概念的关系:

  1. Job、Stage、TaskSet、Task
    在这里插入图片描述
    作业Job:RDD中由action操作生成的一个或多个调度阶段
    调度阶段Stage:每个Job会因为RDD之间的依赖关系拆分多组任务集合(称为调度阶段, 也叫作TaskSet任务集)调度阶段由DAGScheduler来划分,调度阶段有Shuffle Map Stage和Result Stage
    任务Task:Spark实际执行应用的最小单元,分发到Executor上的工作任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值