王小雷
MapReduce的过程(2)
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
腾讯云架构师技术同盟
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
腾讯云架构师技术同盟
返回腾讯云官网
王小雷
首页
学习
活动
专区
工具
TVP
腾讯云架构师技术同盟
返回腾讯云官网
社区首页
>
专栏
>
MapReduce的过程(2)
MapReduce的过程(2)
王小雷
关注
发布于 2018-01-05 18:07:56
发布于 2018-01-05 18:07:56
1.2K
0
举报
文章被收录于专栏:
王小雷
王小雷
MapReduce的编程思想(1)
MapReduce的过程(2)
1. MapReduce从输入到输出
一个MapReduce的作业经过了input、map、combine、reduce、output五个阶段。
其中combine阶段不一定发生,map输出的中间结果被分发到reduce的过程称为shuffle(数据混洗)。
shuffle阶段会发生copy(复制)和sort(排序)。
Reduce任务默认在Map任务数量完成5%才开始启动。
2. input
HDFS上的文件作为MapReduce的输入,org.apache.hadoop.mapreduce.InputFormat类的子类FileInputFormat类将作为输入的HDFS上的文件切分形成输入分片(InputSplit),每个InputSplit将作为一个Map任务的输入,再将InputSplit解析为键值对。
InputSplit只是对数据逻辑上的分片,不会在磁盘上将文件切分、存储。 - 元数据信息由文件路径、文件开始的位置、文件结束的位置、数据块所在的host4部分组成。
InputSplit的数量=文件大小/InputSplitSize
尽量使InputSplit的大小和块的大小相同,从而提高Map任务计算的数据本地性。
3. Map和中间结果的输出
Map函数产生的输出时,为了保证I/O效率,采取了先写到内存的环形缓存区,并做一次预排序。
每个Map任务都有一个内存缓冲区(默认100M),用于存储map函数的输出。
一旦内存缓存区达到阀值,就会新建一个益处写文件,因此在Map任务写完其最后一个输出记录之后,会有若干个溢出写文件。
在Map任务完成之前,溢出写文件被合并成一个已分区且已排序的输出文件为map输出的中间结果。也是Map任务的输出结果。
combine若指定,会在输出文件写到磁盘之前运行,使得map输出的中间结果更紧凑,使得写到本地磁盘和出给Reduce的数据更少。
Map输出的中间结果存储格式为IFile,支持压缩的存储格式。
Reduce通过HTTP方式得到输出文件的分区。
4. shuffle
shuffle代表map函数产生输出到reduce的消化输入的整个过程。
在shuffle过程中,Map任务就处理的只是一个InputSplit,而Reduce任务处理的是所有Map任务同一个分区的中间结果。
shuffle的Copy阶段
当一个Map任务完成时,Reduce任务就开始复制其输出。
shuffle的Sort阶段
合并map的输出文件,并维持排序,做归并排序,排序过程循环进行。
5. Reduce及最后结果的输出
Reduce阶段操作实质上就是对经过shuffle处理后的文件调用reduce函数处理,reduce输出一般为HDFS。
6. Sort
MapReduce计算框架中,主要两种排序算法:快速排序和归并排序。
MapReduce过程中,共发生三次排序:
第一次排序是在内存缓冲区做的内排序,使用的算法是快速排序。
第二次和第三次排序都是文件合并阶段发生的,使用的是归并排序。
7. MapReduce作业进度组成
Map即Map,如map50%reduce0%,表示Map任务已经处理作业输入文件的60%。
Reduce阶段,分为copy、sort、reduce且各占1/3。如,reduce处理了2/3的输入,则整个reduce进度为1/3+1/3+1/3*(2/3)=5/9,因为reduce开始处理输入时,copy和sort已经完成。
MapReduce的编程思想(1)
MapReduce的过程(2)
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2016年04月17日,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
mapreduce
apache
hadoop
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
mapreduce
apache
hadoop
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
目录
MapReduce的编程思想(1)
MapReduce的过程(2)
1. MapReduce从输入到输出
2. input
3. Map和中间结果的输出
4. shuffle
5. Reduce及最后结果的输出
6. Sort
7. MapReduce作业进度组成
MapReduce的编程思想(1)
MapReduce的过程(2)
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐