博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MapRedue详细工作流程
阅读量:5025 次
发布时间:2019-06-12

本文共 1111 字,大约阅读时间需要 3 分钟。

MapRedue详细工作流程

MapReduce工作流程一

MapReduce工作流程二

简述

(1)客户端submit之前获取待处理的数据信息,根据参数配置,形成一个任务分配的规划。(2)提交切片信息到YARN(split.xml,job.split,wc.jar)(3)由MRAPPMaster计算出MapTask的个数(4)启动MapTask(5)通过InputFormat拷贝数据,默认使用TextInputFormat(6)执行用户自定义的Map()方法(7)写出数据到环形缓冲区(8)环形缓冲区默认大小是100M,80%溢出文件。溢出文件之前对数据进行分区排序(9)环形缓冲区溢写到文件中,此时的文件是分区且有序的(10)对结果文件进行归并排序(11)如果设置有合并操作,执行合并,合并之后再次进行归并(12)所有的MapTask执行完成之后,启动相应数量的ReduceTask,并告知Reduce的操作范围(分区)(13)Reduce拷贝Map端的输出文件,先拷贝到内存,内存不足,写入到磁盘(14)合并文件,归并排序,进入Reduce方法(15)如果设置了分组操作,进行分组(分组是为了让两个不相同的对象,							通过某一个条件让其认为是一个对象,从而进入到一个Reduce方法中)	(16)执行用户自定义的Reduce方法(17)通过OutputFormat将执行的结果输出到文件中1)maptask 收集我们的 map()方法输出的 kv 对,放到内存缓冲区中2)从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件3)多个溢出文件会被合并成大的溢出文件4)在溢出过程中,及合并的过程中,都要调用 partitioner 进行分区和针对 key 进行排序5)reducetask 根据自己的分区号,去各个 maptask 机器上取相应的结果分区数据6)reducetask 会取到同一个分区的来自不同 maptask 的结果文件,reducetask 会将这些文件再进行合并(归并排序)7)合并成大文件后,shuffle 的过程也就结束了,后面进入 reducetask 的逻辑运算过程(从文件中取出一个一个的键值对 group,调用用户自定义的 reduce()方法)3)注意Shuffle 中的缓冲区大小会影响到 mapreduce 程序的执行效率,原则上说,缓冲区越大,磁盘 io 的次数越少,执行速度就越快。环形缓冲区的大小可以通过参数调整,参数:io.sort.mb 默认 100M。

本博客仅为博主学习总结,感谢各大网络平台的资料。蟹蟹!!

转载于:https://www.cnblogs.com/upuptop/p/11154307.html

你可能感兴趣的文章
伟大创意检验10要 - 如何检验你的创意是否适合支撑你创业
查看>>
linux下载文件命令wget
查看>>
FLEX XMLLIST 详解
查看>>
[转]开发商死不降价的10大原因 哪一条最让你惊心
查看>>
设计模式学习笔记(一)
查看>>
转:设备文件、设备文件节点 、设备 、设备驱动 区别
查看>>
bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
查看>>
红酒初识
查看>>
xshell连接虚拟机中的liuux(centOS)的方法及原因
查看>>
php多个数组同键名键值相加合并
查看>>
leetcode 合并区间
查看>>
解决eclipse新建项目看不到src/main/java目录办法
查看>>
λ演算
查看>>
基本数据类型重点作业
查看>>
Socket通信简介
查看>>
IoC和AOP
查看>>
hduoj1025——dp, lis
查看>>
在PowerBI中使用R的限制
查看>>
Photoshop-蒙版
查看>>
读书笔记--C陷阱与缺陷(六)
查看>>