MapReduce的过程(2)
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)
MapReduce的过程(2)的更多相关文章
- Hadoop MapReduce执行过程详解(带hadoop例子)
https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 Map ...
- MapReduce Shuffle过程
MapReduce Shuffle 过程详解 一.MapReduce Shuffle过程 1. Map Shuffle过程 2. Reduce Shuffle过程 二.Map Shuffle过程 1. ...
- MapReduce运行过程以及原理
1.map和reduce MapReduce任务过程分为两个处理阶段:map阶段和reduce阶段.每个节点都以键值对作为输入和输出,其类型由程序员来选择.程序员还需要编写两个函数:map函数和red ...
- 分析MapReduce执行过程
分析MapReduce执行过程 MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出. Reducer任务会接收Mapper任务输 ...
- Hadoop学习之Mapreduce执行过程详解
一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: ...
- hadoop源码分析(2):Map-Reduce的过程解析
一.客户端 Map-Reduce的过程首先是由客户端提交一个任务开始的. 提交任务主要是通过JobClient.runJob(JobConf)静态函数实现的: public static Runnin ...
- 彻底理解MapReduce shuffle过程原理
彻底理解MapReduce shuffle过程原理 MapReduce的Shuffle过程介绍 Shuffle的本义是洗牌.混洗,把一组有一定规则的数据尽量转换成一组无规则的数据,越随机越好.MapR ...
- Hadoop MapReduce执行过程实例分析
1.MapReduce是如何执行任务的?2.Mapper任务是怎样的一个过程?3.Reduce是如何执行任务的?4.键值对是如何编号的?5.实例,如何计算没见最高气温? 分析MapReduce执行过程 ...
- Hadoop学习总结之Map-Reduce的过程解析111
一.客户端 Map-Reduce的过程首先是由客户端提交一个任务开始的. 提交任务主要是通过JobClient.runJob(JobConf)静态函数实现的: public static Runnin ...
- Hadoop学习总结之Map-Reduce的过程解析
一.客户端 Map-Reduce的过程首先是由客户端提交一个任务开始的. 提交任务主要是通过JobClient.runJob(JobConf)静态函数实现的: public static Runnin ...
随机推荐
- selenium+python中,框架中,怎么返回上一个菜单
/退回上一级表单 driver.switchTo().defaultContent();
- IOS推流 搭建环境
效果图 iTools有点卡, 但是推到服务器倒是很快的. 推流 前言 这篇blog是iOS视频直播初窥:<喵播APP>的一个补充. 因为之前传到github上的项目中没有集成视频的推流.有 ...
- 隐藏时间表ribbon按钮
Ribbon.ContextualTabs.Timesheet.Home.Share;Ribbon.ContextualTabs.Timesheet.Home.ShowHide;Ribbon.Cont ...
- elasticsearch2.x安装部署
目录 一.安装es以及插件 二.建立索引和映射,添加数据 三.备注 一.安装es以及插件 ElasticSearch-2.3.1版本,系统为CentOS 7.0位. 对应的网上下载地址都有: elas ...
- CodeForces 1097G. Vladislav and a Great Legend
题目简述:给定$n \leq 10^5$个节点的树$T = (V, E)$,令$X \subseteq V$表示一个非空节点集合,定义$f(X)$为包含$X$的最小子树的边数.求 $$ \sum_{\ ...
- WPF RichTextBox 插入回车
richtextbox插入回车,开始是这样写的,在win7下运行时没有问题: MyMessageBox.CaretPosition.InsertLineBreak(); MyMessageBox.Ca ...
- App Distribution Guide--(三)---Configuring Your Xcode Project for Distribution
Configuring Your Xcode Project for Distribution You can edit your project settings anytime, but some ...
- IE各栏的截图说明
工具栏 包括 状态栏 命令栏 菜单栏 收藏栏 IE工具 > 工具栏 > 状态栏 有状态栏显示 无状态栏显示 菜单栏 快捷键 alt 可以快速展示 菜单栏 ,查看 ...
- hdu2795(线段树单点更新&区间最值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题意:有一个 h * w 的板子,要在上面贴 n 条 1 * x 的广告,在贴第 i 条广告时要 ...
- MySQL变更之:Online DDL 和 PT-OSC 该选谁?
参考: http://www.fromdual.ch/online-ddl_vs_pt-online-schema-change 在MySQL 5.6版本以前,最昂贵的数据库操作之一就是执行数据定义语 ...