MapReduce程序分析数据流程

本文详细解析了Hadoop MapReduce的工作流程,包括任务切片、maptask启动、原始数据处理、缓存数组分区与排序、shuffle分发及reduce方法执行。通过了解这些步骤,读者可以更好地掌握MapReduce如何高效地处理大规模数据。

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

分为两步(mapper和reducer):(1)Mapper端;(2)Reducer端。((3)启动类)
核心思想:根据业务场景确定K,V。
K的作用:分区、排序、分组、聚合维度;
K、V都要实现Hadoop的序列化;
Hadoop的序列化实现方式:read、write方法

流程:
1、任务切片划分:计算逻辑–>根据文件大小等
2、根据逻辑启动maptask,maptask的个数决定map执行时的并行度
3、原始数据处理:切片,task负责自己的数据,readline读取一行,得到KV,交给Mapper的map()方法(每读一行数据执行一次)
4、map方法中,context.write(new K,new V),将数据写出到缓存数组MapOututBuffer中,缓存数组进行分区、排序
5、(1)分区:根据K.hashcode%numberReduceTask得到区号
(2)为什么分区: Mapper端输出的数据根据某种规则到达某个Reduce中,输出结果被Reduce计算。
注:同一个规则下的数据不能到达链各个Reduce中,会出现错误。
6、执行Reducer中的reduce()方法之前,进行shuffle分发。
7、执行reduce方法:
(1)从不同的maptask处理的结果中获取属于自己分区的数据;
(2)合并数据(放入集合);
(3)进行排序;
(4)分组;
(5)聚合;
(6)输出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值