Hadoop学习笔记—MapReduce的理解
我不喜欢照搬书上的东西,我觉得那样写个blog没多大意义,不如直接把那本书那一页告诉大家,来得省事。我喜欢将我自己的理解。所以我会说说我对于Hadoop对大量数据进行处理的理解。如果有理解不对欢迎批评指责,不胜感激。
Hadoop为何有如此能耐?
Hadoop之所以能处理大量数据,是因为他提供了一个让大量机器同时处理问题的一个框架,而且高扩展性,可以随时添加机器进来。我曾经和学长讨论过Hadoop和高性能计算机,当时我说这个就像,小白对阵大侠,大侠是高性能计算,小白是普通机器。大侠只有一个,小白却能有千千万万。一个小白肯定拼不过大侠,上十个小白,百个小白……迟早小白会超过大侠。那么如何让一群性能不是很强劲的电脑结合起来,产生惊人的处理能力呢?就是通过Hadoop系统来实现。
什么是MapReduce
Hadoop的文件系统,对于节点管理,最终还是为了进行运算。所以其中最主要的运算核心还是MapReduce。有些书上会吧Map和Reduce翻译过来讲,我觉得很生硬,不如直接用英文来的好。不翻译过来的前提要明白Map和Reduce的内在含义。Map原意是地图,计算机上多为映射,怎么个映射法?其实就是某个键值对映射到固定的reduce。那reduce又是什么,开始我也不明白,为什么不用compute了?后来算是明白了,其实reduce是对数据集进行精简,然后得出相应结果。所以叫reduce减少的意思,有翻译为归并。
为什么提出Map和Reduce
当我们手中有大量数据的时候,如何对数据进行处理,比如去重,排序等甚至更加复杂的处理呢?我们又要如何来用多台机器对数据进行处理?
要是我,我肯定会将大量的数据进行分类,同一类的数据集给同一台机器来处理。怎么分?怎么处理呢?这就需要看到底要对数据做那些处理了。
而这种先分类后处理的想法就是MapReduce的过程。其中分类的具体过程在mapreduce结构中称为shuffle,下面讲解mapreduce的过程中会包涵在其中,但不会单独提出来讲。
如果不对数据分类,意味着不能用多台机器对数据进行处理,因为会出现机器处理的数据之间存在某些重要的联系,这些联系决定了这类数据一定要在同一台机器上运行。所以,运算前对数据进行分类是必要的准备。也就是Map的过程,将有联系的数据分到一起,然后交给相应的reduce做处理。Reduce是对数据进行最终目的性的处理。
MapReduce的细节处理
首先对大量的数据进行简单的分割,如下图所示,每一个split的大小可能是64M也可能是128M其大小是由硬盘传输速度决定的。
、
图1.HDFS对大量数据进行分块
Map过程
对于每个split交给一个map来处理。过程如下。Map的输入是split里面的一行,key为偏移量,value就是该行的内容。处理的结果放入一个容器中,容器填满了就溢出到硬盘,溢出的过程会对数据进行partition和sort。Sort很容易理解,关键是partition,partition也就是前面说的分类,这一部最终决定该键值对未来会交给哪个reduce。但所有map运行完了,就会有一堆spill。当然在map的过程中reduce的准备阶段以及开始,reduce的准备阶段就是把本reduce对应的partition移动到本地来。但要进行reduce操作一定要等所有map结束,属于本reduce的partition全部移到本地,然后真正进入reduce阶段。

图2.Map过程
Reduce 阶段
首先数据准备,也就是上面说的,将属于本reduce的partition移动到本地来。然后进行排序最后成为reduce 的运算数据。Reduce才是真正对数据进行相应的处理产生最终结果。在map和reduce有一个环节—shuffle。我已经融合在了上面说介绍的步骤里面了。Shuffle指的就是数据通过map进行初步处理后,将同一类的数据分发给同一个reduce。

图3.map+reduce过程
Hadoop学习笔记—MapReduce的理解的更多相关文章
- Hadoop学习笔记(7) ——高级编程
Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成 ...
- Hadoop学习笔记(6) ——重新认识Hadoop
Hadoop学习笔记(6) ——重新认识Hadoop 之前,我们把hadoop从下载包部署到编写了helloworld,看到了结果.现是得开始稍微更深入地了解hadoop了. Hadoop包含了两大功 ...
- Hadoop学习笔记(2)
Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...
- Hadoop学习笔记(5) ——编写HelloWorld(2)
Hadoop学习笔记(5) ——编写HelloWorld(2) 前面我们写了一个Hadoop程序,并让它跑起来了.但想想不对啊,Hadoop不是有两块功能么,DFS和MapReduce.没错,上一节我 ...
- Hadoop学习笔记(2) ——解读Hello World
Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...
- Hadoop学习笔记(9) ——源码初窥
Hadoop学习笔记(9) ——源码初窥 之前我们把Hadoop算是入了门,下载的源码,写了HelloWorld,简要分析了其编程要点,然后也编了个较复杂的示例.接下来其实就有两条路可走了,一条是继续 ...
- Hadoop学习笔记系列
Hadoop学习笔记系列 一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼 ...
- [转帖]hadoop学习笔记:hadoop文件系统浅析
hadoop学习笔记:hadoop文件系统浅析 https://www.cnblogs.com/sharpxiajun/archive/2013/06/15/3137765.html 1.什么是分布式 ...
- Hadoop学习笔记—22.Hadoop2.x环境搭建与配置
自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...
随机推荐
- 深入剖析Nginx一点小笔记
前几天在图书馆看书,恰好看到这本<深入剖析nginx>,花了快一周的时间看完了这本书,写点笔记心得便于以后复习. 以前对nginx的认识就只是停留在一个反向代理服务器上.百度了一下ngin ...
- ABP框架详解(六)Aspects
这种AOP式的设计非常类似于Asp.net MVC和WebApi中过滤器(Filter)机制,感觉没有太多可讲述的,只能谈谈设计思路. 框架中AspectAttribute特性用于设置到需要被拦截的T ...
- 教你如何完美保存Html编辑器编辑过的文本到Word中
有时候在网页上面编辑了一段文字,有图片,想保存一份到word文档里面,但是复制粘贴以后发现格式并没有保存下来,今天就来教大家如何完整的保存Html编辑器编辑过的文字(可以包含图片,但是图片必须是绝对路 ...
- [自己动手玩黑科技] 1、小黑科技——如何将普通的家电改造成可以与手机App联动的“智能硬件”
NOW, 步 将此黑科技传授予你~ 一.普通家电控制电路板分析 普通家电,其人机接口一般由按键和指示灯组成(高端的会稍微复杂,这里不考虑) 这样交互过程,其实就是:由当前指示灯信息,按照操作流程按相应 ...
- iOS——自定义Segue实现总结
在阅读了iOS 8自定义动画转场上手指南后,刚开始不理解,后来慢慢消化了,现在总结如下: 1. 自定义Segue关键在于继承UIStoryboardSegue并重写perform方法 2. 动画可以在 ...
- Django集成百度富文本编辑器uEditor
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. 首先从ueEditor官网下载最新版本的包, ...
- jni和java对应关系
Java 类型 本地类型 描述 boolean jboolean C/C++8位整型 byte jbyte C/C++带符号的8位整型 char jchar C/C++无符号的16位整型 short ...
- LuaAlchemy API 介绍
The AS3 Sugar provides a Lua-like way to access AS3 class and instance creation, property getter/set ...
- IOS 公共类-MyDateUtil 日期处理Util
IOS 公共类-MyDateUtil 日期处理Util 此为处理日期的公共类.适用IOS6+ .h文件: #import <Foundation/Foundation.h> //适用 IO ...
- 中小公司PMO不一样期间的责任
中小公司,又称中小型公司或中小企,它是与所在行业的大公司对比在人员规划.财物规划与运营规划上都对比小的经济单位.此类公司一般可由单自个或少数人供给资金构成,其招聘人数与营业额皆不大,因此在运营上多半是 ...