MapReduce重点(Map阶段,Reduce阶段,Shuffle阶段)

一、MapReduce的工作流程

1、Map阶段

(1)读取hdfs上的文件,每个block启动一个maptask,按行读取一个block中的内容。
(2)map函数对数据split拆分,得到数组,组成一个键值对<word,1>
(3)做分区对应多个reduceTask
(4)分区数据,按key分组排序
(5)在map端执行小reduce,一个map中输出<key,times>

2、Rudeuce阶段

  (1) 每个分区对应一个reduce task,他会读取(所有map节点上的maptask)相同分区所有输出
  (2) reduce Task对接受的所有map输出排序
  (3) 执行reduce,对数据累加
  (4) 输出到hdfs

 

3、shuffle过程

原因:因为频繁的磁盘I/O操作会严重降低效率,所以"中间结果"不会立马写入磁盘&

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MapReduce 是一种分布式计算框架,能够将大规模数据集分割成小块,然后在多台计算机上并行处理这些小块数据,最后将结果合并起来。其主要流程如下: 1. Map 阶段:在这个阶段MapReduce 将大规模数据集划分成小块,然后在每个小块上运行 Map 函数,将其转换为键值对的形式,并将输出结果写入本地磁盘。Map 函数的作用是将输入数据转换为键值对,其中键表示数据的某个特征,值表示该特征对应的数据。例如,对于一个文本文件,Map 函数可以将文件中的每一行转换为一个键值对,其中键是行号,值是该行的内容。 2. Shuffle 阶段:在这个阶段MapReduceMap 函数的输出结果根据键值对重新分配到不同的机器上,以便进行下一步的 Reduce 操作。Shuffle 阶段的主要作用是将 Map 函数的输出结果按照键进行分组,将具有相同键的值发送到同一个 Reduce 任务中。这个过程需要进行网络传输,因此需要耗费一定的时间和带宽。 3. Reduce 阶段:在这个阶段MapReduce 将每个机器上的键值对进行合并和处理,并将结果写入输出文件。Reduce 函数的输入是一个键和一组具有该键的值,输出是一组经过归约计算后的结果。Reduce 函数的作用是对具有相同键的值进行归约操作,例如求和、求平均值等。 4. 输出阶段:在这个阶段MapReduce 将每个 Reduce 函数的输出结果合并成最终的输出文件,并将该文件存储到分布式文件系统中。 整个 MapReduce 过程是自动化的,程序员只需要编写 MapReduce 函数,并指定输入和输出路径即可。同时,MapReduce 还具有容错性和自动恢复功能,能够在单个计算机或网络中断时自动重启任务,从而保证整个过程的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值