数据算法结构|青训营笔记

69 阅读1分钟

这是我参与「第四届青训营」笔记创作的第6天
大数据Shuffle原理与实践

  1. Shuffle概述
  • MapReduce概述
  • Shuffle阶段:在map的基础上进行数据移动,为后续的reduce作准备
  • Reduce阶段:对移动后的数据进行处理,但依然是在单机上处理小数据
  • shuffle重要的原因:
    • M*R次网络连接
    • 大量的数据移动
    • 数据丢失风险
    • 可能存在的大量排序操作
    • 大量的数据序列化、反序列化操作
    • 数据压缩
  • shuffle都是优化的重点!!
  1. Shuffle算子截屏2022-07-31 10.13.44.png
  • 算子内部的依赖关系截屏2022-07-31 13.20.50.png
  • shuffle dependency构造截屏2022-07-31 13.22.08.png
  • Partitioner截屏2022-07-31 13.23.03.png
    • aggregator:createCombiner:只有一个value的时候初始化的方法
    • mergeValue:合并一个value到Aggregator
    • mergeCombiners:合并两个Aggregator
  1. Shuffle过程
  • Hash Shuffle:写数据--每个partition会映射到一个独立的文件
  • 每个task生成一个包含所有partition数据的文件
  • 每个reduce task分别获取所有map task生成的属于自己的片段
  • shuffle过程的触发流程截屏2022-07-31 13.36.08.png
  • shuffle handle截屏2022-07-31 13.38.00.png
  • shuffle handle与shuffle writer的对应截屏2022-07-31 13.38.45.png
  • reader与writer的实现
  • shuffle 优化实用技术:Zero Copy,Netty Zero Copy
  • 常见的问题:数据无备份,IO并发,IO吞吐,GC频繁,影响NodeManager
  1. Push shuffle
  • 原因:Avg IO size 太小,造成大量的随机IO,严重影响磁盘吞吐;M*R 次读请求,造成大量的网络连接,影响稳定性
  • Push shuffle 的实现:
    • Facebook:cosco
    • Linkedln: magnet
  • magnet实现原理:截屏2022-07-31 15.07.31.png