图说MapReduce处理数据的过程

本文详细介绍了Hadoop处理数据的过程,包括数据如何被拆分成DataBlock并存储在HDFS的不同节点上,以及MapReduce任务如何从HDFS读取这些DataBlock进行处理。还解释了InputSplit的作用及MapReduce作业的执行流程。

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

下图来源于《Hadoop For Dummies》图书,示例为统计每个航班的飞行航次。


图片描述

A:文件存储到linux系统、windows系统都是以data block的形式来存储。hdfs会把文件分拆成固定尺寸的data blok。

A-->B:HDFS文件系统把预存储的文件拆分成多个数据块(Data Block),每个数据块都有两个副本,即以每个数据块三份的形式存储于HDFS文件系统的不同的data node中。

C:文件在分解成固定尺寸的数据块data block时,每个数据块data block的最后一条记录有可能会被分割到下一个数据块,为了解决这个问题,在进入数据处理的data block都会被重新计算,会记算一个data block中第一条记录、最后一条记录所处的位置,会记录下一个数据块位置,以及上个数据块最后一条记录在下个数据块中的偏移,即input splits。

B-->C:为了保证每个数据块中分割时边界记录的完整性,每个data block被重新计算为input split。

B-->D:在yarn中,每个mapreduce job开启时,yarn中的资源管理器都会创建一个 application master守护进程,来监听mapreduce job的生命周期。application master守护进程会首先向hdfs的namenode节点获取文件做对应的所有data block的位置,并把data blok计算为input split。然后application master守护进程向yarn的资源管理器发送请求处理input split,然后进入了map处理阶段。

C-->E:(map阶段)map函数处理输入分片input split,每次读取分片中的一条记录,该记录以记录偏移k1,记录本身内容v1的键值对形式输入map()。map函数从每条记录中进行抽取,表达为<XX提取词k2,V2>的键值对输出(v2为1)。k2/v2键值对首先缓存于内存,达到一定字节,会被转存到data node的磁盘不同的分区中。

E-->F:(shuffle阶段)shuffle阶段以k2对不同分区的map阶段输出进行聚合,形成为k2为键、一系列k2对应的v2(在此为1)值集合为值的键值对形式。然后以k2键进行排序,并写入到本地磁盘不同的分区。

F-->G:把shuffle阶段不同分区的输出通过网络拷贝到分配有reducer task的data node磁盘的对应分区中。

G-->H:(reduce阶段)reducer函数处理list(<k2,v2值集合>),形成以k2为键,v3为值的键值对。然后输出文件存储到hdfs。

后续学习深入,继续进行修改!!!欢迎指摘!


学习资料:
1,《Hadoop For Dummies》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值