MapReduce工作流程以及过程I/O

本文详细描述了MapReduce处理流程中的map、shuffle和reduce阶段,包括数据读取、分区策略(如HashPartitioner)、以及三次主要的I/O操作,重点讲解了如何在内存溢出时优化磁盘存储和数据传输过程。

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

MR处理流程:

map阶段:

        按行读取文件,将读取的文件缓存到缓冲区内,当文件大小达到了80%的溢出比,则将缓冲的文件写入磁盘。当磁盘内数据多了的时候,将文件合并成一整个块,完成读数据。

         ※map阶段※默认是不需要分区的,需不需要分区要看后续有几个reducetask,当reducetask>=2的时候,map阶段就需要针对自己的输出数据进行分区。

        所谓分区就是根据什么规则将数据提交给哪一个maptask及逆行处理

        <默认的分区规则:HashPartitioner> key.hashcode % reducetask个数=余数(分区编号)

shuffle阶段:

        map阶段的缓冲区到reduce阶段的数据merge都属于shuffle阶段,shuffle阶段会将map阶段存到磁盘的数据抽取出来并进行分区处理

reduce阶段:

        reduce阶段会将shuffle阶段拉到分区的数据进行merge

过程I/O:

mapreduce阶段总共涉及三次I/O:

        第一次:map阶段,将数据切分通过缓冲区缓存到磁盘

        第二次:shuffle阶段(处理map与reduce中间流程的数据),将map阶段缓存到磁盘内的数据抽取到reduce阶段的分区内

        第三次:reduce阶段将shuffle阶段抽取并处理好的数据merge,并写入磁盘

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yangjiwei0207

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

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

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

打赏作者

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

抵扣说明:

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

余额充值