MapReduce工作流程

Map阶段

        1.客户端在submit提交作业之前获取待处理信息,根据参数配置信息形成一个任务分配规划信息(如数据切片信息,各种参数配置元数据等)

        2.客户端提交作业信息,内容包括:split切片信息,jar包,xml参数配置信息

        3.YarnRM,计算出MapTask的数量,有MrAppMaster同一管理分配到各NodeManager上

        4.MapTask任务中,由InputFormat(有多种,默认为TextInputFormat文件读取)来管理,RecorderReader来读取数据。读取的数据类型为kv键值对,k为偏移量,v为一行数据。

        5.由程序员编写的处理逻辑,将读取进来的kv处理为新的kv键值对

        6.新的kv数据,由OutputCollector将数据写入环形缓冲区(一个存储mapper处理后的数据缓冲区,默认为100M)

        7.缓冲区的数据量达到80%时,将会对缓冲区中的数据进行分区排序,然后写入磁盘中。同时将反向向缓冲区里继续写入mapper处理后的数据。(达到80%后将会继续分区排序并落盘,然后反向写入。这里会根据数据量的大小,可能产生多个溢写文件)

        8.所有的数据处理完成后,将会对所有的溢写文件进行合并和归并排序,最终形成一个文件

注意点:

        所有涉及到文件读取与写入的地方都可以使用压缩,目的是为了减少网络io磁盘io,但会增加CPU负荷。

        分区默认是根据key的hashcode值对reduceTask数量进行计算得到的。也可以自定义分区规则

reduce阶段

        1.MrAppMaster检测到MapTask完成后,将会根据分区来开启相应数量的ReduceTask

        2.ReduceTask主动去所有MapTask输出的文件中寻找对应分区的数据

        3.ReduceTask将所有数据进行一次归并排序,并生成一个文件

        4.ReduceTask读取数据,并按照编写的处理逻辑运行

        5.通过outputFormat管理,RecordWriter输出数据(可以是文件也可以是数据库等)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值