MapReduce,shuffle的理解,精简

本文深入解析Hadoop的MapReduce框架,阐述其分布式程序运算原理,分而治之的策略,以及map、shuffle、reduce各阶段的工作流程。理解数据分片、键值对处理、环形缓冲区、反向溢写、归并操作等关键技术点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总的理解:
     Hadoop 当中的 MapReduce 是一个分布式程序运算框架。
主要思想理念:
     分而治之。它分为map个reduce两个阶段。而界于map和reduce阶段还有一个很重要的过程数shuffle。接下来我们再一一细讲。主要思想理念:分而治之。
拆解: 
map端:
    1.分即是MapReduce中的map阶段,将数据分片,格式化为多个(K,V)键值对的块。然后按块启动多个maptask。
shuffle:
    2.MapTask收集我们的map()方法输出的kv键值对对,放到内存缓冲区中。这也意味着shuffle过程开始了。环形缓冲区的内存一般是100M,默认当数据写到80%时开始反向溢写。而原本已经进来的这80%的数据,首先进行分区,然后分区内排序,并且选择性的combine(如有设置的话),最后写出到磁盘。因为shuffle的环形缓冲区大小会影响MR的效率,所以可以适当的调大,90%等。
   3.当maptask任务都完成溢出后,会对磁盘中这个map任务产生的所有临时文件(spill文件)进行归并(merge)操作生成最终的正式输出文件,此时的归并是将所有spill文件中的相同partition合并到一起。并对各个partition中的数据再进行一次排序(sort),生成key和对应的value-list。接下来等待reduce task来拉取数据。
reduce阶段:
     每个分区对应的reducetask,拉取相同分区的所有输出,进行归并排序排序,然后执行reduce()方法,对数据累加,输出到hdfs上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值