预备知识:什么是hadoop,HDFS?

Hadoop是一个开源框架,它允许在整个集群使用简单编程模型计算机的分布式环境存储并处理大数据。它的目的是从单一的服务器到上千台机器的扩展,每一个台机都可以提供本地计算和存储。
HDFS全称为Hadoop Distributed File System(分布式文件系统),可以粗浅得理解成将很大的文件分成固定大小的小片,存储在多个计算机上,更详细的参考:https://www.cnblogs.com/codeOfLife/p/5375120.html

1、什么是mapreduce?

Map/Reduce是一个用于大规模数据处理的分布式计算编程模型,用户在使用时,需要定义Map和Reduce函数。
map函数用来处理原始数据(初始键值对)以生成一批中间的key/value对,reduce函数将所有这些中间的有着相同key的values合并起来。

2、mapreduce运行大致过程。

两个计算阶段:
(1)Map
由一个或者多个MapTask组成。
每个MapTask处理输入数据集合中的一片数据(InputSplit),并将产生的若干个数据片段(一个数据文件)写到本地磁盘上。
(2)Reduce
由一个或者多个ReduceTask组成。
ReduceTask则从每个MapTask上远程拷贝相应的数据片段,经分组聚集和归约后,将结果写到HDFS上作为最终结果。

3、MapTask

执行过程概述:
首先,通过用户提供的InputFormat将对应的InputSplit解析成一系列key/value,并依次交给用户编写的map()函数处理,接着按照指定的Partition对数据分片,以确定每个key/value将交给哪个ReduceTask处理,之后将数据交给用户定义的Combiner进行一次本地合并(没有则直接跳过),最后即将处理结果保存到本地磁盘上。
具体步骤:
(1)Read阶段:MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value。
(2)Map阶段:该阶段只要是将解析出的key/value交给用户编写的map()函数处理,并产生一系列新的key/value。
(3)Collect阶段:在用户编写的map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的ley/value分片(通过调用Partition),并写入一个环形内存缓冲区中。
(4)Spill阶段:即“溢写”,当环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并操作。
(5)Combine阶段:当所有数据处理完成后,MapTask对所有临时文件进行一次合并,以确保最终只会生成一个数据文件。

4、ReduceTask

执行过程概述:
ReduceTask的输入数据来自各个MapTask,因此首先通过HTTP请求从各个已经运行完成的MapTask所在TaskTracker机器上拷贝相应的数据分片,待所有数据拷贝完成后,再以key为关键字对所有数据进行排序(sort),通过排序,key相同的记录聚集到一起形成若干分组,然后将分组数据交给用户编写的reduce()函数处理,并将数据结果直接写到HDFS上作为最终输出结果。
具体步骤:
(1)Shuffle阶段:也称为Copy阶段。ReduceTask从各个MapTask所在的TaskTracker上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。
(2)Merge阶段:在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上的文件过多,并且可以为后面整体的归并排序减负,提升排序效率。
(3)Sort阶段:按照MapReduce的语义,用户编写的reduce()函数输入数据是按key进行聚集的一组数据。为了将key相同的数据聚集在一起,Hadoop采用了基于排序的策略。由于各个MapTask已经实现了自己的处理结果进行了局部排序,因此,ReduceTask只需要对所有数据进行一次归并排序即可。
(4)Reduce阶段:在该阶段中,ReduceTask将每组数据依次交给用户编写的reduce()函数处理。
(5)Write阶段:reduce()函数将计算结果写到HDFS上。

参考资料:http://szjian.iteye.com/blog/2100848

转载于:https://www.cnblogs.com/surimj/p/9893345.html

MapReduce简介和过程浅析相关推荐

  1. DL之yolov3:使用yolov3算法时需要对Ubuntu系统进行配置的简介、过程步骤之详细攻略

    DL之yolov3:使用yolov3算法时需要对Ubuntu系统进行配置的简介.过程步骤之详细攻略 目录 yolov3算法时需要对Ubuntu系统进行配置的简介 Ubuntu系统进行配置的过程步骤 第 ...

  2. CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介、过程思路、关键步骤配图、案例应用之详细攻略

    CV之NS:图像风格迁移(Neural Style 图像风格变换)算法简介.过程思路.关键步骤配图.案例应用之详细攻略 目录 图像风格迁移算法简介 图像风格迁移算法过程思路 1.VGG对比NS 图像风 ...

  3. MapReduce简介

    问题:如何解决海量数据的运算? 先从一张图简单的看下mapreduce的处理过程 MapReduce概述: MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的 ...

  4. MapReduce:Shuffle过程详解

    MapReduce:Shuffle过程详解 1.Map任务处理 1.1 读取HDFS中的文件.每一行解析成一个<k,v>.每一个键值对调用一次map函数.                & ...

  5. stm32时钟初始化过程浅析

    stm32时钟初始化过程浅析 (大致梳理了一下32启动过程中时钟的初始化过程) 加载main函数之前(启动代码中LDR R0, =__main之前),HCLK总线时钟默认上电是上一次断电前配置的频率 ...

  6. wcdma系统随机接入过程的流程图_WCDMA系统随机接入过程浅析

    WCDMA 系统随机接入过程浅析 无线分公司监控中心 陈园 [ 摘要 ] 随机接入过程是 UE 接入 WCDMA 网络进行通信的一个重要步骤,本文通过对 WCDMA 系 统的随机接入过程的分析, 就 ...

  7. Map-Reduce的逻辑过程

    假设我们需要处理一批有关天气的数据,其格式如下: 按照ASCII码存储,每行一条记录 每一行字符从0开始计数,第15个到第18个字符为年 第25个到第29个字符为温度,其中第25位是符号+/- 006 ...

  8. mongo java mapreduce_MongoDB中的MapReduce简介

    MongoDB MapReduce MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE).这样做的好处是可以在任务被分解后 ...

  9. MapReduce 之shuffle过程

    我们知道在MapReduce程序在map阶段和reduce阶段之间,会进行shuffle操作.那么我们来详细分析一下shuffle的过程或者原理 在MapTask调用Mapper#map方法之前,会构 ...

最新文章

  1. 网易云音乐的消息队列改造之路
  2. 关于 继承、扩展和协议,深度好文
  3. wxWidgets:多文档界面实例
  4. dx postprocess
  5. 前端学习(1388):多人管理项目8user登录
  6. network3D: 交互式桑基图
  7. ASP.NET中Url重写后,打不开真正的Html页面
  8. Java集合---ConcurrentHashMap原理分析
  9. PTA 程序设计天梯赛(101~120题)
  10. Golang、python中的一个异或加密算法,用来加密字符串。
  11. 多商户商城系统源码 B2B2C商城020社区团购 单多商户入驻商城H5系统源码
  12. win10下如何安装.NetFrame3.5框架
  13. 【5G NR】ZP CSI-RS资源配置
  14. FPGA之SDRAM控制器设计(四)
  15. 七年级计算机上册知识树,七年级上知识树.doc
  16. android摄像头方向反,Android前置摄像头图像被倒置保存
  17. router-view显示不出来的原因
  18. 微信诱导分享怎么防封_微信域名防红防封系统,轻松微信推广域名被屏蔽问题
  19. 音频隐写术总结篇(附隐写软件下载链接)
  20. POS标记——HMM模型

热门文章

  1. 什么是阻塞和非阻塞?
  2. c语言控制安卓桌面,让你自己编写的Android的Launcher成为系统中第一个启动应用程序,也是唯一的Launcher...
  3. mysql报错01427_ORA-01427问题的分析和解决
  4. Ubuntu 安装 Apache Airflow
  5. 统计标识符个数C语言,C语言文件-统计其中的用户自定义标识符号的个数,并列出用户自定义的标识符号...
  6. 安徽工程大学大学计算机基础,安徽工程大学.pdf
  7. html项目的文件结构,项目文件结构
  8. 20190815:(leetcode习题)两数之和(2种方法)
  9. java字符排序_如何按字母顺序对字符串进行排序java
  10. python缩进问题idle_Python IDLE中的缩进问题