大数据面试部分:MapReduce的工作原理

本文详细介绍了MapReduce的工作流程,包括Map阶段的输入处理、Shuffle阶段的排序、分区和分组,以及Reduce阶段的处理。MapReduce通过数据本地化、分区、排序和组合优化性能。Shuffle过程中,数据先在内存中排序,达到一定比例后溢写到磁盘,最终合并成有序文件。Reduce任务接收并处理这些数据,输出结果保存在HDFS上。
摘要由CSDN通过智能技术生成

3.讲述一下mapreduce的流程(shuffle的sort,partitions,group)

首先是 Mapreduce经过SplitInput 输入分片 决定map的个数在用Record记录 key value。然后分为以下三个流程:

Map:

输入  key(long类型偏移量)  value(Text一行字符串)

输出  key value

Shuffle:、

   合并(merge)map输出时先输出到环形内存,当内存使用率达到60%时开始溢出写入到文件,溢出文件都是小文件,所以就要合并他们,在这个构成中就会排序,根据key值比较排序

   排序(sort)如果你自定义了key的数据类型要求你的类一定是WriteableCompartor的子类,不想继承WriteableCompartor,至少实现Writeable,这时你就必须在job上设置排序比较器job.setSortCmpartorClass(MyCompartor.class);而MyCompartor.class必须继承RawCompartor的类或子类

   分区(partition)会根据map输出的结果分成几个文件为reduce准备,有几个reducetask就分成几个文件,在job上设置分区器job.setPartitionerClass(MyPartition.class)Myrtition.class要继承Partitioner这个类

   分组(group)分区时会调用分组器,把同一分区中的相同key的数据对应的value制作成一个iterable,并且会在sort。在job上设置分组器。Job.setGroupCompartorClass(MyGroup.class)MyGroup.class必须继承RawCompartor的类跟子类

上面的结果储存到本地文件中,而不是hdfs上

上面只要有完成结果,reduce就开始复制上面的结果,通过http方式

Reduce

  输入key时map输出时的key value是分组器分的iterable

  输出 key value

  输出结果保存在hdfs上而不是本地文件中

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值