六、【计算】大数据Shuffle原理与实践(下) | 青训营笔记

  👉引言💎

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
热爱写作,愿意让自己成为更好的人…


在这里插入图片描述

铭记于心
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉

四、Push Shuffle

0 概述
  • 为什么需要Push Shuffle,因为一般shuffle过程存在不可避免的问题:

    • 数据存储在本地磁盘,没有备份

    • IO 并发:大量 RPC 请求(M*R)

    • IO 吞吐:随机读、写放大(3X)

    • GC 频繁,影响 NodeManager

  • 为了优化该问题,有很多公司都做了思路相近的优化,push shuffle

1 Magnet主要流程
  • Spark driver组件,协调整体的shuffle操作

  • map任务的shuffle writer过程完成后,增加了一个额外的操作push-merge,将数据复制份推到远程shuffle服务上

  • magnet shuffle service是一个强化版的ESS。将隶属于同一个shuffle partition的block,会在远程传输到magnet后被merge到一个文件中

  • reduce任务Amagnet shuffle service 接收合并好的shuffle数据

2 实现原理:
  • bitmap: 存储Emerge的mapper id, 防止重复merge

  • position offset: 如果本次block没有正常merge,可以恢复到上一个block的位置

  • currentMapld: 标识当前正在append的block,保证不同mapper 的block能依次append

主要为边写边push的模式,在原有的shuffle基础上尝试push聚合数据,但并不强制完成,读取时优先读取push聚合的结果,对于没有来得及完成聚合或者聚合失败的情况,则fallback到原模式

3 Magnet 可靠性
  • 如果Map task输出的Block没有成功Push到magnet上,并且反复重试仍然失败,则reducetask直接从ESS上拉取原始block数据

  • 如果magnet上的block因为重复或者冲突等原因,没有正常完成merge的过程,则reducetask直接拉取未完成merge的block

  • 如果reduce拉取已经merge好的block失败,则会直接拉取merge前的原始block

  • 本质上, magnet中维护了两份shuffle数据的副本

4 Cloud Shuffle Service 思想

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82JnEti8-1661440964552)(image/image_vN88KGZRLN.png)]

5 Cloud Shuffle Service架构

6 Cloud Shuffle Service 读写流程
  • 写入

在这里插入图片描述

  • 读取

    在这里插入图片描述

  • Cloud Shuffle Service 支持AQE

    一个Partition会最终对应到多个Epoch file, 每个EPoch 目前设置是512MB

五、总结

  1. Shuffle 概述:

    • 数据shuffle的概念,其存在的意义以及基本流程

    • Shuffle为什么对性能影响很重要

  2. Shuffle算子

    • 常见的Shuffle算子

    • 理解宽依赖与窄依赖,ShuffleDependency及其相关组件

  3. shuffle过程

    • Spark中shuffle实现的历史

    • Spark中主流版本的shuffle写入和读取过程

  4. Push shuffle

    • Magnet Push Shuffle的设计思路

    • Cloud Shuffle Service 的设计实现思路

问题:

  1. 自己构造一个会产生shuffle 的spark作业,修改shuffle相关的参数,对比一下不同参数对作业运行的影响

  2. 在spark中shuffle实现的发展过程中,每一次变化都优化了之前哪些缺点,又带来了哪些问题?

  3. Push Shuffle相对比Fetch Shuffle最大的挑战是什么?

🌹写在最后💖
路漫漫其修远兮,吾将上下而求索!伙伴们,再见!🌹🌹🌹在这里插入图片描述

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想new的出来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值