宽依赖的代价:Spark 与 MapReduce Shuffle 数据重分布核心对比(759)

**宽依赖的代价:Spark 与 MapReduce Shuffle 数据重分布核心对比** 🔄⚡ 

在大数据处理中,**Shuffle**(数据重分布)是连接不同计算阶段的关键操作,但也是性能瓶颈的“罪魁祸首”😫。Spark 和 MapReduce 作为两大分布式框架,对 Shuffle 的实现差异直接影响作业效率。本文从**宽依赖**(Wide Dependency)的角度,对比两者的核心设计代价。 

### 1. **Shuffle 机制对比** 
- **MapReduce**:采用**“全量落盘”**策略,每个 Map 任务将数据分区后写入磁盘,Reduce 任务再拉取。这种设计简单可靠,但**I/O 开销极大** 📉,尤其是宽依赖(如 `GROUP BY`)时,数据需跨节点全量传输。 
- **Spark**:引入**弹性分布式数据集(RDD)**和**内存优先**策略,Shuffle 数据可缓存在内存中(溢出时才落盘)。但宽依赖仍会触发**全量数据网络传输** 🌐,且可能因内存不足加剧 GC 压力。 

### 2. **宽依赖的代价** 
宽依赖(如 `join` 或 `reduceByKey`)要求**父 RDD 的每个分区数据被下游所有子分区消费**,导致: 
- **网络拥堵**:数据需跨节点广播,MapReduce 的磁盘 I/O 成为瓶颈;Spark 虽减少磁盘读写,但内存和网络压力上升 ⚠️。 
- **容错成本高**:Spark 需通过**血缘(Lineage)**重算丢失的分区,而 MapReduce 依赖持久化中间结果,恢复更快但存储代价大 💾。 

### 3. **优化方向** 🛠️ 
- **Spark**:通过`Tungsten`优化序列化、`Sort-Based Shuffle`减少小文件,或使用`广播变量`避免 Shuffle。 
- **MapReduce**:几乎无优化空间,但适合**批处理海量冷数据** ❄️。 

### 结语 
Spark 通过内存计算和 DAG 调度**部分缓解**了宽依赖的代价,但本质问题未根除——**数据重分布始终是分布式计算的“阿喀琉斯之踵”** 🏹。选择框架时,需权衡场景需求:实时性优先选 Spark,稳定性优先选 MapReduce。
5G.okatady091.asia/PoSt/1125_323794.HtM
5G.okatady090.asia/PoSt/1125_636864.HtM
5G.okatady089.asia/PoSt/1125_222851.HtM
5G.okatady088.asia/PoSt/1125_184235.HtM
5G.okatady087.asia/PoSt/1125_158451.HtM
5G.okatady086.asia/PoSt/1125_518457.HtM
5G.okatady085.asia/PoSt/1125_525280.HtM
5G.okatady084.asia/PoSt/1125_407030.HtM
5G.okatady083.asia/PoSt/1125_606262.HtM
5G.okatady082.asia/PoSt/1125_377013.HtM
5G.okatady091.asia/PoSt/1125_367359.HtM
5G.okatady090.asia/PoSt/1125_830646.HtM
5G.okatady089.asia/PoSt/1125_029872.HtM
5G.okatady088.asia/PoSt/1125_026070.HtM
5G.okatady087.asia/PoSt/1125_471014.HtM
5G.okatady086.asia/PoSt/1125_939710.HtM
5G.okatady085.asia/PoSt/1125_320803.HtM
5G.okatady084.asia/PoSt/1125_404346.HtM
5G.okatady083.asia/PoSt/1125_818449.HtM
5G.okatady082.asia/PoSt/1125_525398.HtM
5G.okatady091.asia/PoSt/1125_217054.HtM
5G.okatady090.asia/PoSt/1125_586942.HtM
5G.okatady089.asia/PoSt/1125_515955.HtM
5G.okatady088.asia/PoSt/1125_212673.HtM
5G.okatady087.asia/PoSt/1125_141121.HtM
5G.okatady086.asia/PoSt/1125_241754.HtM
5G.okatady085.asia/PoSt/1125_140751.HtM
5G.okatady084.asia/PoSt/1125_182425.HtM
5G.okatady083.asia/PoSt/1125_171936.HtM
5G.okatady082.asia/PoSt/1125_457898.HtM
5G.okatady091.asia/PoSt/1125_730717.HtM
5G.okatady090.asia/PoSt/1125_004043.HtM
5G.okatady089.asia/PoSt/1125_532014.HtM
5G.okatady088.asia/PoSt/1125_455777.HtM
5G.okatady087.asia/PoSt/1125_829414.HtM
5G.okatady086.asia/PoSt/1125_076313.HtM
5G.okatady085.asia/PoSt/1125_044583.HtM
5G.okatady084.asia/PoSt/1125_828049.HtM
5G.okatady083.asia/PoSt/1125_578535.HtM
5G.okatady082.asia/PoSt/1125_884338.HtM
5G.okatady091.asia/PoSt/1125_777070.HtM
5G.okatady090.asia/PoSt/1125_188766.HtM
5G.okatady089.asia/PoSt/1125_520706.HtM
5G.okatady088.asia/PoSt/1125_226509.HtM
5G.okatady087.asia/PoSt/1125_006991.HtM
5G.okatady086.asia/PoSt/1125_892996.HtM
5G.okatady085.asia/PoSt/1125_770161.HtM
5G.okatady084.asia/PoSt/1125_836294.HtM
5G.okatady083.asia/PoSt/1125_281455.HtM
5G.okatady082.asia/PoSt/1125_996910.HtM
5G.okatady091.asia/PoSt/1125_426276.HtM
5G.okatady090.asia/PoSt/1125_441107.HtM
5G.okatady089.asia/PoSt/1125_296979.HtM
5G.okatady088.asia/PoSt/1125_291209.HtM
5G.okatady087.asia/PoSt/1125_848263.HtM
5G.okatady086.asia/PoSt/1125_441672.HtM
5G.okatady085.asia/PoSt/1125_259531.HtM
5G.okatady084.asia/PoSt/1125_563668.HtM
5G.okatady083.asia/PoSt/1125_264498.HtM
5G.okatady082.asia/PoSt/1125_807086.HtM
5G.okatady091.asia/PoSt/1125_370594.HtM
5G.okatady090.asia/PoSt/1125_309861.HtM
5G.okatady089.asia/PoSt/1125_000491.HtM
5G.okatady088.asia/PoSt/1125_282939.HtM
5G.okatady087.asia/PoSt/1125_441536.HtM
5G.okatady086.asia/PoSt/1125_704750.HtM
5G.okatady085.asia/PoSt/1125_725347.HtM
5G.okatady084.asia/PoSt/1125_339291.HtM
5G.okatady083.asia/PoSt/1125_558893.HtM
5G.okatady082.asia/PoSt/1125_963086.HtM
5G.okatady091.asia/PoSt/1125_070319.HtM
5G.okatady090.asia/PoSt/1125_144555.HtM
5G.okatady089.asia/PoSt/1125_344155.HtM
5G.okatady088.asia/PoSt/1125_333986.HtM
5G.okatady087.asia/PoSt/1125_105387.HtM
5G.okatady086.asia/PoSt/1125_181125.HtM
5G.okatady085.asia/PoSt/1125_030909.HtM
5G.okatady084.asia/PoSt/1125_092565.HtM
5G.okatady083.asia/PoSt/1125_011246.HtM
5G.okatady082.asia/PoSt/1125_006273.HtM

全部评论

相关推荐

昨天 19:53
湖南大学 Java
字节剪映一面1. 你做的项目是实际有社会上的用户在使用,还是个人兴趣去研究的?2. 你大概能实习多久?3. 实习地点在广州或者深圳,你有了解吗?4. 请整体介绍一下鹿山美食探店平台的整体架构,你是怎么设计的?5. 你都是去云上找的服务器吗?是买的还是其他方式?6. 整个系统分成了几大块?它们的分层架构是怎么样的?7. 这些功能都是你一个人做的吗?8. 你的秒杀功能是怎么设计的?9. 你是怎么得出高并发下乐观锁实现秒杀失败率高的结论?做了压测吗?10. 压测了多少 KPS?11. 1000 个并发下的失败率是多少?12. 你是用 MySQL 去判断库存是否大于 0 吗?13. 改完判断库存的方式后,秒杀成功率有明显提升吗?14. 你用 Redis 减库存时,减到 0 怎么处理?如何防止减出负数?15. 改为 Redis 缓存库存 + 异步下单后,有再进行压测吗?16. 异步下单后,如何让用户实时感知到秒杀成功与否?17. 如果想要提高秒杀的并发量,你还有什么优化措施?18. 库存分段具体怎么分段?19. 针对线上工业级的量,排行榜的更新和查询有什么优化措施?20. 设计全局热榜(更新频繁、查询量大),从更新和查询两方面该怎么设计?21. 千万用户量级下,用户频繁点赞导致 Redis 频繁写,这种情况合理吗?有考虑过相关场景吗?22. 全局热榜查询时,有什么应对高查询量的措施?23. 你在项目中的哪些场景分别解决了缓存穿透、雪崩和击穿的问题?24. 请分别讲解缓存穿透、雪崩和击穿是什么?25. 如何应对缓存穿透?26. 布隆过滤器会有误判吗?27. 缓存雪崩的第一种情况(缓存统一过期)怎么解决?28. 如何解决缓存击穿?29. 热门 key 非常热,全网都来查询,即使有 Redis 缓存也可能爆掉,这种情况怎么处理?30. 多级缓存该如何分布?31. 如何提高一个热门 key 的并发量?32. Java 中的两个等号和 equals 有什么区别?33. 如果 equals 没有实现,默认比较的是什么?34. 用双引号声明的字符串 "ABC" 和 new String("ABC") 用两个等号判断是否相等?35. Java 中的 Volatile 关键字有什么作用?36. Volatile 能保证原子性吗?37. 实际中你平常会用到 Volatile 关键字吗?38. 交替打印是怎么样的实现?多个线程修改变量时需要加锁吗?39. 计算机存储层次从快到慢依次是哪些?40. 二维数组按行和按列遍历,性能会有差别吗?41. TCP 中 TIMEWAIT 状态有什么作用?42. 你对 TCP 的哪些知识还有印象?43. TCP 的全双工能解释一下吗?44. TCP 和 UDP 主要有哪些区别?45. 两条 SQL 语句的性能怎么样?如果不行该怎么优化?46. 模糊匹配时除了把字段反过来存,还有其他更高效的办法吗?47. 深度分页问题该怎么处理?48. 请分别举例出行锁和表锁的触发场景?49. 更新操作一定是行锁吗?有没有什么条件会变成表锁?50. Redis 中的过期删除策略是怎么样的?51. 由 N-1 个正整数组成的未排序数组,元素是 1 到 N 不重复的整数,如何找到缺失的那个数?52. 给定一个先序和中序序列,如何输出后续序列?53. 你对本次面试的项目组主要业务流程有什么想要咨询的吗?54. 你对面试流程(日常实习生)有什么想要咨询的吗?55. 你对简历有什么想要咨询的建议吗?
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务