MapReduce原理简介

本文以图文方式详细阐述MapReduce的工作流程,从用户提交任务开始,包括数据切片、Map任务执行、Reduce任务执行等步骤,深入理解Hadoop MapReduce的内在机制。

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

昨天其实写了一部分Mapreduce的运行原理 见博客https://blog.youkuaiyun.com/weixin_42231373/article/details/85010279写了细节部分

今天以图的方式结合文字来捋捋思路

0)   用户提交任务 (含数据)

1)    集群首先对输入数据源进行切片

2)    master 调度 worker 执行 map 任务

3)    worker 读取输入源片段

4)    worker 执行 map 任务,将任务输出保存在本地
5)    master 调度 worker 执行 reduce 任务,reduce worker 读取 map 任务的输出文件

6) 执行 reduce 任务,将任务输出保存到 HDFS

细节大致如下 由上至下依次执行

                                                               用户提交任务job 给集群

切片                                                        集群查找源数据 对源数据做基本处理

分词(每行执行一次map函数)                 集群(yarn的appliction)分配map任务节点worker

映射                                                        其中间数据(存在本地)

分区(partition)                                         中间数据

排序 (或二次排序)                                  中间数据

聚合(combine有无key聚合后key无序)    中间数据  分组(group) 发生在排序后混洗前(个人理解)

混洗(shuffle后key有序) 混洗横跨mapper和reducer,其发生在mapper的输出和reducer的输入阶段

规约(reduce)                                    集群(yarn的appliction)分配reduce任务节点worker

 

这里是一些补充

切片 不属于map阶段,但却是map阶段的输入,是集群对输入数据的解析处理

分词,映射,分区,排序,聚合 都属map阶段

混洗  横跨map阶段和reduce阶段,其发生在map阶段的输出和reduce的输入阶段

规约 属reduce阶段 规约结果是reduce阶段的输出,输出格式由集群默认或用户自定义

分词即map()函数的输入与map阶段的输入略有差别,他的输入是切片结果的kv形式,行号(偏移量)与行内容


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值