Hadoop学习重点主要为HDFS、MapReduce 部分:

接下来重点描述一下MAP与Reduce 的过程。

看了好多资料,如果有错误的地方请大家指出。

MAP部分:

下图是官方给予的关于MapReduce的步骤,实际上图已经很好的说明了MapReduce的过程。

TaskTracker 接受到MAP任务,或者SPLIT,  一个SPLIT对应一个或者多个BLOCK。有多少个SPLIT就会有多少个MAP过程。

MAP过程一共分为3步。

1、输入阶段。  MAP进程获取SPLIT分块

2、MAP过程。根据每一个<KEY,VALUE>对进行MAP过程。代码如下:  以下是MAP阶段多线程运行部分。

也就是对每一个<KEY,VALUE>进行MAP 相应操作。

public void run(Context content) throws ..{...while(context.nextKeyValue()){map(key,value,context)}..
}
protected map(...){context.write((KEYOUT)key,(VALUEOUT)value);
}

3、Shuffle部分。结束MAP步骤输出MAP结果,结果是存储在内存中的。  但是当MAP结果数量过大时,内存空间不足,那么就会将结果SPILL,也就是压进磁盘中。在压进磁盘之前,会进行sort partition and combine(if has)。  压进磁盘过程中, MAP部分停止往内存输入数据直到SPILL结束。

sort:  应该是根据KEY值进行 merge 排序

partition:  将MAP输出的<key,value>进行 part.    不同的 partition 会分到不同的reduce机器进行处理。   hadoop默认的partition部分是根据key值的hash值分类,从而确保相同的key值分到同一个reudce钟

combine:这是MAP的最后一步,就是对于MAP输出的一个预reduce

Reduce部分:

通过上图来理解REDUCE部分。

我将REDUCE分为以下几步:

1、数据收集。   REDUCE端有一个进程间歇的向 Jobtrack发送请求,询问已经完成MAP的数据。  获得相应数据后,REDUCE端通过HTTP请求将结果COPY到本地

2、数据整合。  REDUCE端从不同的机器上获得多个MAP结果,然后进行MERGE整合

3、对每一个<key, Iist<value>> 进行一个REUDCE操作。  主要代码如下:

public void run(Context content) throws ..{...while(context.nextKeyValue()){reduce(key,value,context)}..
}
protected void reduce(...){for(VALUEIN value: values){contenxt.write(...)}

hadoop学习之:Map、Reduce详解相关推荐

  1. Hadoop学习:Map/Reduce初探与小Demo实现

    一.    概念知识介绍 Hadoop MapReduce是一个用于处理海量数据的分布式计算框架.这个框架攻克了诸如数据分布式存储.作业调度.容错.机器间通信等复杂问题,能够使没有并行 处理或者分布式 ...

  2. js数组中indexOf/filter/forEach/map/reduce详解

    今天在网上看到一篇帖子,如题: 出处:前端开发博客 (http://caibaojian.com/5-array-methods.html) 在ES5中一共有9个Array方法,分别是: Array. ...

  3. hive linux进程数,控制Hive MAP个数详解

    控制Hive MAP个数详解 Hive的MAP数或者说MAPREDUCE的MAP数是由谁来决定的呢?inputsplit size,那么对于每一个inputsplit size是如何计算出来的,这是做 ...

  4. Hadoop之InputFormat数据输入详解

    Hadoop之InputFormat数据输入详解 Job提交流程和切片源码详解 FileInputFormat切片机制 CombineTextInputFormat切片机制 InputFormat接口 ...

  5. Hadoop之Yarn工作机制详解

    Hadoop之Yarn工作机制详解 目录 Yarn概述 Yarn基本架构 Yarn工作机制 作业提交全过程详解 1. Yarn概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于 ...

  6. 《Hadoop海量数据处理:技术详解与项目实战(第2版)》一2.8 小结

    本节书摘来异步社区<Hadoop海量数据处理:技术详解与项目实战(第2版)>一书中的第2章,第2.8节,作者: 范东来 责编: 杨海玲,更多章节内容可以访问云栖社区"异步社区&q ...

  7. 《Hadoop海量数据处理:技术详解与项目实战(第2版)》一第2章 环境准备

    本节书摘来异步社区<Hadoop海量数据处理:技术详解与项目实战(第2版)>一书中的第2章,第2.1节,作者: 范东来 责编: 杨海玲,更多章节内容可以访问云栖社区"异步社区&q ...

  8. Activiti工作流学习之流程图应用详解

    Activiti工作流学习之流程图应用详解 1.目的 了解Activiti工作流是怎样应用流程图的. 2.环境准备 2.1.相关软件及版本 jdk版本:Jdk1.7及以上 IDE:eclipse 数据 ...

  9. 【强化学习】Sarsa算法详解以及用于二维空间探索【Python实现】

    Sarsa算法 Sarsa算法,是基于Q-Learning算法.改动其实很小. 本文工作基于之前的Q-Learning的项目,如果有疑问可以看下面两个问题: [强化学习]Q-Learning算法详解以 ...

  10. python map函数详解

    python map函数详解 python中有些内置的高阶函数,如map(),filter(),reduce():之所以称其为高阶函数,因为这类函数接受的参数中有一个参数为函数对象. map()函数格 ...

最新文章

  1. python的dict实现
  2. php图书信息浏览器,使PHP即时输出结果到浏览器
  3. Android开发(六)——组件颜色Selector(Selector与Shape的基本用法 )
  4. JAVA Map 和 List 排序方法
  5. php处理html数据类型,PHP html_entity_decode() 函数 | 菜鸟教程
  6. sae java 开发环境_新浪开放平台 sae环境 java主机使用感受
  7. [争什么! 掺在一起做撒尿牛丸啊! 笨蛋]ASP.NET Core 2.0 + EF6 + Linux +MySql混搭
  8. unindent does not match any outer indentation level
  9. 福师计算机应用基础在线作业,福师《计算机应用基础》在线作业二 下列软件中属于应用软件的是...
  10. 红石外汇 RedstoneFX|每日汇评:日元在央行温和数据发布后,等待美国关键通胀数据
  11. CCW:浪潮云+智能协同云平台获评“用户首选品牌”
  12. MTK MT8735射频设计资料参考
  13. IP-guard V4 服务器迁移方法
  14. android修改屏幕大小设置,android mediaplayer 视频修改视频大小 (屏幕尺寸mediaPlayer =......
  15. 服务器找不到存储服务器,Alfresco社区版“在此服务器上找不到Alfresco存储库”...
  16. 常用逻辑用语知识点【初级和中阶辅导】
  17. ContentPlaceHolder
  18. 林铭的鸿蒙灵珠,终于知道了《儒道至圣》中方运和《真武世界》中天元谁更厉害了!...
  19. HBase整合MR本地IDEA运行
  20. FileZilla Server源码分析(1)

热门文章

  1. sql遍历所有数据集
  2. 两个大文件找出相同的一条记录
  3. Socket之UDP客户端【Python】
  4. 突发!Redis之父退出:不在维护Redis项目
  5. 干货!Java字节码增强探秘
  6. Zoe Liu:传统算法与深度学习各有所长
  7. CoNEXT 2018:在Facebook上部署IETF QUIC
  8. ffmpeg内存模型及AVPacket和AVFrame API基本使用
  9. LeetCode——二分查找
  10. Java代码简化之朗母达表达式(Lambda Express)