job全异常 mapreduce_分布式计算框架MapReduce

MapReduce虽是一项过时的技术,但是在面试时任然容易被面试官提问,这里简单的对MapReduce做一个了解并做了一张思维导图方便记忆:

9661c0b4c4f7e6fad1caf2bc56f45df4.png

整个MapReduce分为两大阶段:maptask和reducetask

maptask阶段分为数据读入,map运算,collect缓存,spill溢写,合并

reducetask阶段同样分为5个阶段:拷贝,合并,排序,reduce,output

map和reduce运算之间的过程统称为shuffle过程:

在这个过程中,我们可以对运算出的数据进行分区,排序,聚合等操作,shuffle过程贯穿MapReduce过程。

首先来讲maptask:

ec6e45744a14d1ee6acb03b5a2c94a1d.png

第一阶段read:

5447e462be78fa885800335b011c315b.png

这里主要过程在submit阶段:

4560c9e37df011b8f7ed0800cbccdeb8.png

job提交流程的源码主要完成jobid的获取,jar包的拷贝,规划maptask数,写入配置文件,然后将其提交到yarn进行资源调度并开启maptask。

maptask默认情况下由切片数量决定,但是在小文件过多的情况下,可以自定义combineinputformat以减少map数量:

44ad040d4bee1010a94e8176d717c48f.png

map阶段负责切分运算:

059d76cc48ea1a02a6d073f10ea185a7.png

运算后将数据提交至缓存:

ce621d50e3b2606c7096957f25917d0a.png

当缓存数据存储到80%时,溢出数据到磁盘:

3ee7b2cc9b7eab1d12ef6b25c2767389.png

在溢写过程中进行第一次分区排序,排序可以分为全排序,区内排序,二次排序。

718b4f1f73f1723cc5f92802c5f69392.png

这时如果数据发生了倾斜,还可以对数据提前进行combiner操作以减轻reducetask的负担:

b3b89d62552ab426ddb7fed912d9f7d3.png

最后将数据进行提交,每个maptask只生成一个文件:

67d2eb7244294c7e2dc819ce92a4d231.png

至此,maptask结束,继续进入reducetask阶段,reducetask阶段比较简单,直接上图:

b193c3993662fd39c77f72889981ab21.png

除此之外,MapReduce还有一些常用的操作如ETL数据清洗,join其他表等

这里提供一份思维导图希望大家指出错误:

16249127460a6788d6de3ace34517184.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值