hadoop学习之:Map、Reduce详解
Hadoop学习重点主要为HDFS、MapReduce 部分:
接下来重点描述一下MAP与Reduce 的过程。
看了好多资料,如果有错误的地方请大家指出。
MAP部分:
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详解相关推荐
- Hadoop学习:Map/Reduce初探与小Demo实现
一. 概念知识介绍 Hadoop MapReduce是一个用于处理海量数据的分布式计算框架.这个框架攻克了诸如数据分布式存储.作业调度.容错.机器间通信等复杂问题,能够使没有并行 处理或者分布式 ...
- js数组中indexOf/filter/forEach/map/reduce详解
今天在网上看到一篇帖子,如题: 出处:前端开发博客 (http://caibaojian.com/5-array-methods.html) 在ES5中一共有9个Array方法,分别是: Array. ...
- hive linux进程数,控制Hive MAP个数详解
控制Hive MAP个数详解 Hive的MAP数或者说MAPREDUCE的MAP数是由谁来决定的呢?inputsplit size,那么对于每一个inputsplit size是如何计算出来的,这是做 ...
- Hadoop之InputFormat数据输入详解
Hadoop之InputFormat数据输入详解 Job提交流程和切片源码详解 FileInputFormat切片机制 CombineTextInputFormat切片机制 InputFormat接口 ...
- Hadoop之Yarn工作机制详解
Hadoop之Yarn工作机制详解 目录 Yarn概述 Yarn基本架构 Yarn工作机制 作业提交全过程详解 1. Yarn概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于 ...
- 《Hadoop海量数据处理:技术详解与项目实战(第2版)》一2.8 小结
本节书摘来异步社区<Hadoop海量数据处理:技术详解与项目实战(第2版)>一书中的第2章,第2.8节,作者: 范东来 责编: 杨海玲,更多章节内容可以访问云栖社区"异步社区&q ...
- 《Hadoop海量数据处理:技术详解与项目实战(第2版)》一第2章 环境准备
本节书摘来异步社区<Hadoop海量数据处理:技术详解与项目实战(第2版)>一书中的第2章,第2.1节,作者: 范东来 责编: 杨海玲,更多章节内容可以访问云栖社区"异步社区&q ...
- Activiti工作流学习之流程图应用详解
Activiti工作流学习之流程图应用详解 1.目的 了解Activiti工作流是怎样应用流程图的. 2.环境准备 2.1.相关软件及版本 jdk版本:Jdk1.7及以上 IDE:eclipse 数据 ...
- 【强化学习】Sarsa算法详解以及用于二维空间探索【Python实现】
Sarsa算法 Sarsa算法,是基于Q-Learning算法.改动其实很小. 本文工作基于之前的Q-Learning的项目,如果有疑问可以看下面两个问题: [强化学习]Q-Learning算法详解以 ...
- python map函数详解
python map函数详解 python中有些内置的高阶函数,如map(),filter(),reduce():之所以称其为高阶函数,因为这类函数接受的参数中有一个参数为函数对象. map()函数格 ...
最新文章
- python的dict实现
- php图书信息浏览器,使PHP即时输出结果到浏览器
- Android开发(六)——组件颜色Selector(Selector与Shape的基本用法 )
- JAVA Map 和 List 排序方法
- php处理html数据类型,PHP html_entity_decode() 函数 | 菜鸟教程
- sae java 开发环境_新浪开放平台 sae环境 java主机使用感受
- [争什么! 掺在一起做撒尿牛丸啊! 笨蛋]ASP.NET Core 2.0 + EF6 + Linux +MySql混搭
- unindent does not match any outer indentation level
- 福师计算机应用基础在线作业,福师《计算机应用基础》在线作业二 下列软件中属于应用软件的是...
- 红石外汇 RedstoneFX|每日汇评:日元在央行温和数据发布后,等待美国关键通胀数据
- CCW:浪潮云+智能协同云平台获评“用户首选品牌”
- MTK MT8735射频设计资料参考
- IP-guard V4 服务器迁移方法
- android修改屏幕大小设置,android mediaplayer 视频修改视频大小 (屏幕尺寸mediaPlayer =......
- 服务器找不到存储服务器,Alfresco社区版“在此服务器上找不到Alfresco存储库”...
- 常用逻辑用语知识点【初级和中阶辅导】
- ContentPlaceHolder
- 林铭的鸿蒙灵珠,终于知道了《儒道至圣》中方运和《真武世界》中天元谁更厉害了!...
- HBase整合MR本地IDEA运行
- FileZilla Server源码分析(1)