王小雷
MapReduce的过程(2)
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
王小雷
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
MapReduce的过程(2)
MapReduce的过程(2)
王小雷
关注
发布于 2018-01-05 18:07:56
1.2K
0
发布于 2018-01-05 18:07:56
举报
文章被收录于专栏:
王小雷
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 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
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
推荐