MapRedue详细工作流程
MapRedue详细工作流程
简述
(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。
本博客仅为博主学习总结,感谢各大网络平台的资料。蟹蟹!!
MapRedue详细工作流程的更多相关文章
- MapReduce与Yarn 的详细工作流程分析
MapReduce详细工作流程之Map阶段 如上图所示 首先有一个200M的待处理文件 切片:在客户端提交之前,根据参数配置,进行任务规划,将文件按128M每块进行切片 提交:提交可以提交到本地工作环 ...
- Storm 中什么是-acker,acker工作流程介绍
概述 我们知道storm一个很重要的特性是它能够保证你发出的每条消息都会被完整处理, 完整处理的意思是指: 一个tuple被完全处理的意思是: 这个tuple以及由这个tuple所导致的所有的tupl ...
- 爬虫之scrapy工作流程
Scrapy是什么? scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量代码,就能够快速的抓取到数据内容.Scrapy 使用了 Twisted['twɪstɪd] ...
- [Servlet]Servlet工作流程及注意事项
Servlet工作过程 采用Servlet完成Web实际的工作流应用程序是通过Tomcatserver公布服务,client与server遵循的端部之间的相互作用Http议完毕的. 详细工作流程例如以 ...
- GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮 ...
- 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...
- SpringMVC工作流程 --通透较详细
SpringMVC工作流程 SpringMVC工作流程 流程说明(重要): (1)客户端发送一个http请求给前端控制器(DispatcherServlet): (2)前端控制器(DispacherS ...
- Git 工作流程
Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必须有一个规范的工作流程,让大家有效地合作,使得项目井井有条地发展下去.”工作流程”在英语里,叫做”workflow”或者”flow”,原意 ...
- Spark基本工作流程及YARN cluster模式原理(读书笔记)
Spark基本工作流程及YARN cluster模式原理 转载请注明出处:http://www.cnblogs.com/BYRans/ Spark基本工作流程 相关术语解释 Spark应用程序相关的几 ...
随机推荐
- HTTP.SYS 详解 (网络转载)
http.sys 是一个位于Win2003和WinXP SP2中的操作系统核心组件, 能够让任何应用程序通过它提供的接口,以http协议进行信息通讯. 温馨提示:如果用户不慎删除了该驱动文件,不用担心 ...
- IntelliJ IDEA的jsp中内置对象方法无法被解析的解决办法
主要原因是因为缺乏依赖 可以通过添加依赖的方式 导入servlet-api.jar,jsp-api.jar,tomcat-api.jar 这三个jar即可 这三个jar在tomcat的lib目录下有 ...
- windows下进程间通信的(13种方法)
转自:http://blog.csdn.NET/shiqz/article/details/5862936 摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求.编写多进 ...
- Linux命令行和shell编程
Shell Shell是一个程序,用户输入的命令通过shell来传达给内核或其它程序.用户在linux打开一个终端,终端就会自动调用用户的shell. Linux上的Shell有很多种,用的最多是sh ...
- MAC和PHY的区别(网线上传递的是模拟信号)
一块以太网网卡包括OSI(开方系统互联)模型的两个层.物理层和数据链路层.物理层定义了数据传送与接收所需要的电与光信号.线路状态.时钟基准.数据编码和电路等,并向数据链路层设备提供标准接口.数据链路层 ...
- 高并发 Nginx+Lua OpenResty系列(2)——Nginx Lua API
Nginx Lua API 和一般的Web Server类似,我们需要接收请求.处理并输出响应.而对于请求我们需要获取如请求参数.请求头.Body体等信息:而对于处理就是调用相应的Lua代码即可:输出 ...
- 你需要了解的HTTP协议
了解HTTP协议 HTTP (超文本传输协议,HyperText Transfer Protocol),是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP 是万维网的数据通信基础. 通常, ...
- J2SE的基本简介与J2EE/J2ME的差异
J2SE简介与J2EE.J2ME的比较 Java2平台包括:标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本. J2SE,J2ME和J2EE,这也就是SunONE(Open NetE ...
- Unity Shader 屏幕后效果——边缘检测
关于屏幕后效果的控制类详细见之前写的另一篇博客: https://www.cnblogs.com/koshio0219/p/11131619.html 这篇主要是基于之前的控制类,实现另一种常见的屏幕 ...
- 100天搞定机器学习|Day2简单线性回归分析
第一天机器学习100天|Day1数据预处理,我们学习了数据预处理.知道了,数据预处理是机器学习中最基础和最麻烦,未来占用时间最长的一步操作.数据预处理一般有六个步骤,导入库.导入数据集.处理缺失值.分 ...