8 ,宽依赖 ,窄依赖 ,架构图(重点) ,lineage ,stage ,dag ,pipeline

一 , 宽依赖 ,窄依赖

1 ,前情回顾 :

  1. 缓存 : 内存,硬盘,保存点。
  2. standalone 集群搭建。
  3. sparkPi 任务的提交。
  4. spark on yarn
  5. standalone-client 模式程序运行原理。
  6. standalone-cluster 模式程序运行原理。
  7. yarn-client 模式程序运行原理。
  8. yarn-cluster 模式程序运行原理。

2 ,架构理解 :

  1. Master ( standalone ) : 资源管理的主节点( 进程 ) • Cluster Manager : 在集群上获取资源的外部服务 ( 例如 standalone , Mesos , Yarn ) 。
    主节点
  2. Worker Node ( standalone ) : 资源管理的从节点 ( 进程 ) 或者说管理本机资源的进程。
    从节点
  3. Application : 基于 Spark 的⽤用户程序,包含了 driver 程序和运行在集群上的 executor 程序。
    一个 spark 程序
  4. Driver Program :用来连接工作进程( Worker )的程序
    主进程
  5. Executor:是在一个 worker 进程所管理的节点上为某 Application 启动的一个进程,该进
    程负责运行任务,并且负责将数据存在内存或者磁盘上。每个应⽤用都有各自独⽴立的
    executors
  6. Task :被送到某个 executor上的工作单元
  7. Job:包含很多任务 ( Task ) 的并行计算,可以看做和 action 对应
  8. Stage:⼀个 Job 会被拆分很多组任务,每组任务被称为 Stage ( 就像 Mapreduce 分 map task
    和 reduce task 一样)

3 ,架构图 :

  1. 硬件图 :
    在这里插入图片描述
  2. 进程图 :
    在这里插入图片描述
  3. 程序图 :
    在这里插入图片描述

4 ,总结 :

  1. 每个程序有自己的 driver 。
  2. 每个程序的 executor 是独立的 。
  3. task 是一个个小任务。
  4. master 负责接收任务。
  5. stage : 一组并行的 task 。

5 ,rdd 之间有依赖关系 :通过不同算子,建立的依赖关系

6 ,rdd 的宽窄依赖 : 用 wc 举例子

  1. 窄依赖 : 同一个分区的数据,去了同一个分区。
  2. 宽依赖 : 同一个分区的数据,去了不同分区。又叫 sheuffle 依赖 ( Shuffle Dependency )
    在这里插入图片描述

二 ,stage

1 ,lineage 血统 ( 一条数据线:一个数据的前世今生 )

  1. lineage : RDD 依赖关系图
    作用 : 容错
    怎么容错 : 依赖关系图中的某一环节数据丢失的话,就根据依赖关系图,去追溯到那里,可以利用算子,重新计算出数据。
  2. 依赖的类型 : 宽依赖 / 窄依赖
    (Wide Dependencies)/(Narrow Dependencies)。
  3. 容错原理 :
    当一个节点宕机了,进行容错恢复时,对于窄依赖来讲,进行重计算时只要把丢失的父 RDD 分区重算即可,不依赖于其他节点。而对于 Shuffle Dependency 来说,进行重计算时需要父 RDD 的分区都存在,这样计算量就太大了比较耗费性能。
    孙 : 窄依赖容易,宽依赖难
  4. 例子 : 3 个 stage ( 用宽依赖隔开 )
    在这里插入图片描述

2 ,Stage : 阶段

  1. 划分 stage 的思路 :
    从最后一个 RDD 开始,调用递归算法查找该 RDD 后开始遍历,判断父 RDD 和该 RDD 的依赖关系,如果是宽依赖,就把父 RDD 和前面所有的 RDD 都划分成一个 stage,若果是窄依赖,继续递归查找父 RDD 的父 RDD,递归的出口是直到找不到父 RDD,最后把所有的 RDD 统一划分一个 stage 。
  2. WordCount 的 stage 个数
    在这里插入图片描述
  3. 孙 :
    1 ,窄依赖放到一起。
    2 ,遇到宽依赖了 : 前面的算作一个,从现在开始,往后看。
    3 ,再遇到宽依赖了 : 前面的全部算作一个,从现在开始往后看。

3 ,dag : 有向无环图

  1. DAG ( Directed Acyclic Graph ) :叫做有向无环图
  2. DAG 解决了什么问题 :
    1 ,每个 MapReduce 操作都是相互独立的,HADOOP不知道接下来会有哪些Map Reduce。
    2 ,每一步的输出结果,都会持久化到硬盘或者 HDFS 上。
  3. spark 的优点 :
    所以 Spark 中引入了 DAG,它可以优化计算计划,比如减少 shuffle 数据。
  4. dag : 就是各个 stage 连接起来组成的图 :
    在这里插入图片描述

4 ,处理数据的方式 : 落地

  1. 一条一条的处理
  2. 并不是所有数据一起处理
  3. 数据处理后落地
  4. 落地到款依赖之前那一步
    在这里插入图片描述

5 ,dag 与 action 算子 :

  1. 关系 : 1 对 1
  2. 原理 : 本质上在 Action 算子中通过 SparkContext 进行了提交作业的 runJob 操作,触发了RDD DAG 的执行。

6 ,applycation , job , stage , task 关系图 :

在这里插入图片描述

7 ,task 划分 : 粗箭头代表 task ,细箭头代表 shuffle

在这里插入图片描述

8 ,spark 的最大优势 :

迭代的场景

9 ,pipeline : spark 处理书的模式 ( 管道处理模式 )

  1. 一个 stage 由一组并行的 task 组成
  2. stage 的并行度由谁决定 : 由stage 的最后一个 rdd ( final rdd ) 的分区数决定。
  3. pipeline 图解 :
    在这里插入图片描述
    在这里插入图片描述

10 ,一个 stage 的多个并行 task 中,处理的逻辑是相同的吗 ?

不是,因为,如图
在这里插入图片描述

11 ,管道中的数据,何时落地 :

  1. 持久化时
  2. shuffle write 时

12 ,如何提高 stage 的并行度 :

增加分区数

13 ,任务执行流程 :

  1. driver 做了什么事情 : 前三步
  2. executor 在哪里执行 : worker 节点
  3. dagScheduler 失败重试 :4 次
  4. taskScheduler 失败重试 : 3 次
  5. 如果发生错误,taskScheduler 首先失败重试,然后 dagScheduler 失败重试,如果还是失败,就失败了。
    在这里插入图片描述

14 ,推测执行 :

默认关闭
如果有任务执行缓慢,会有另外的机器执行这个任务,谁先结束,用谁的。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值