大数据之 Spark Shuffle 和 Hadoop MapReduce Shuffle的区别

Spark Shuffle 和 Hadoop MapReduce Shuffle 是分布式计算框架中处理中间结果的关键阶段,它们的主要区别在于设计原理、执行效率和资源利用率:

Hadoop MapReduce Shuffle

  1. Sort-based:Hadoop MapReduce 的 Shuffle 过程基于排序。在 Map 阶段结束后,每个 Mapper 会将不同 key 对应的 value 按照 key 进行排序,并且通常会对数据进行分区(partitioning),然后写入本地磁盘。Reducer 在拉取数据前,Mapper 已经完成了排序和分区工作。

  2. Disk-intensive:由于 Map 阶段产生的中间数据会被写入磁盘,并且在 Reduce 阶段开始之前,这些数据需要从各个 Mapper 节点上读取到 Reducer 节点,这涉及到大量的磁盘 I/O 操作。

  3. Secondary Sort:MapReduce 支持 secondary sort,可以对 value 进行二次排序,适合于需要全局排序的应用场景。

  4. Pipeline Breaker:Shuffle 阶段是 Map 和 Reduce 之间的瓶颈,因为它会导致流水线操作的中断,即 Map 阶段完成后必须等待 Shuffle 完成才能启动 Reduce 阶段。

Spark Shuffle

  1. Hash-based:Spark Shuffle 默认使用哈希方式进行分区,而不是基于排序,但也可以选择启用排序 shuffle。它根据 partitioner 的逻辑把数据分发到不同的 reduce task 中,而不是预先在每个 mapper 上排序所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值