二 MapReduce 各阶段流程分析

本文详细分析了MapReduce的Map Task和Reduce Task的执行流程。Map阶段包括Read、Map、Collect、Spill和Combine五个步骤,其中Map函数处理输入数据,Collect将结果写入内存缓冲区,溢写阶段会将数据排序并写入本地磁盘。Reduce阶段主要包括Shuffle、Merge、Sort、Reduce和Write,Shuffle阶段数据被拷贝并可能写入磁盘,Merge过程不断合并文件,Sort保证数据按key排序,最后Reduce函数处理数据并写入HDFS。

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

系统资源,尤其是 集群内部网络资源使用情况。 MR 可以运行在共享集群上处理 TB 级 甚至 PB 级的数据。同时,改作业与共享集群的机器上数以百计的 任务存在 竞争关系
MapReduce 关注点:
  hadoop MapReduce 作业被分成一系列运行在分布式集群中的 map 任务和 reduce 任务。因此负载是遍布集群中的各个节点的。 map 任务主要负责数据的 载入、解析、转换、和过滤。每个 reduce 任务 负责处理 map 任务输出结果的一个 子集 , 然后 reduce 任务从 mapper 任务处 复制 map 任务的 中间数据,进行 分组和聚合操作。 从 简单的聚合复杂的关联以及 笛卡尔积操作。
MapReduce 
文件分块Block,Split读块,到Map,到Reduce的过程
下面引用的这个图 特么有点问题。  画错了。
   Partitioner 是根据 key 或 value 及 reduce 的数量来决定当前的这对输出数据交给那个 reduce task,默认是对 key 进行 hash 后 再以reduce 数量取模。是为了平均 reduce 的处理能力。Partitioner 的默认内存缓冲区是 100MB,当 mapTask输出更多结果的时候就会将数据 刷入磁盘中形成临时文件,然后再次利用缓冲区进行写。 就是 Spill 过程。溢写是由单独线程来完成,不影响往缓冲区写 map 结果的线程。 溢写的阈值时 0.8 也就是 80MB 后开始启动 溢写, Spill 会将这80MB 内存锁定执行溢写。 MapTask 还可以继续写入剩下的20MB 互不影响。 内存缓冲区不会对发送到相同的 reduce 端的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值