3、MapReduce
MapReduce是一种处理海量数据的并行编程模型和计算框架,用于对大数据及的并行计算。
1、MapReduce基础
1)MapReduce处理数据集过程,如下图:
a)Map阶段:
MapReduce 框架将任务的输入分割成固定大小的片段(splits),随后将每个split进一步分解成一批键值对<K1,V1>。Hadoop为每个split创建一个Map任务用于执行用户自定义的map函数,并将对应split中的<K1,V1>对作为输入,得到计算的中间结果<K2,V2>.接着将中间结果按照K2进行排序,并将key值相同的value放在一起形成<K2,list(V2)>元组。最后再根据Key值的范围将这些元组进行分组,对应不同的Reduce任务。
b)Reduce阶段:
Reducer把从不同Mapper接收来的数据整合在一起并进行排序,然后调用用户自定义的reduce函数,对输入的<K2,list(V2)>对进行相应处理,得到键值对<K3,V3>并输出到HDFS上。 job.setNumReduceTasks()方法设置reduce数。
2、MapReduce的集群行为
1)、任务调度与执行:有一个JobTracker和多个TaskTracker两类节点控制完成
2)、本地计算:split通常应小于或等于HDFS数据块的大小,从而保证split不会跨越两台计算机存储,便于本地计算。
3)、Shuffle过程:将Mapper的输出结果按照key值分成R份(R是设定的Reduce的个数)划分时使用哈希函数,保证某一范围内的key由某个Reduce来处理。
4)、合并Mapper输出:在Shuffle之前闲的结果进行合并(Combine过程)即将中间结果相同key值的多组<key,value>对合并成一对。可以减少中间结果数量,从而减少数据传输过程中的网络流量。
5)、读取中间结果:Mapper的输出结果被直接写到本地磁盘而非HDFS,
6)、任务管道:有时R个Reduce会产生R个结果,会将这R个结果作为另一个计算任务的输入开始两一个任务
3、Map/Reduce个数
1)Mappers的数目直接有splits来决定
2)Reducers的数目略小于reducer slots的总数
a.所有的Reducers可以并行执行,减少排队时间
b.对于未执行reducer的slots,可以在其他reducer发生故障时立即分配给新创建的reducer
3)Reducers的个数要小于Mappers的个数
3、MapReduce的更多相关文章
- 三、MapReduce学习
MapReducer是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(化简)" ...
- 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制
今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...
- 第2节 mapreduce深入学习:14、mapreduce数据压缩-使用snappy进行压缩
第2节 mapreduce深入学习:14.mapreduce数据压缩-使用snappy进行压缩 文件压缩有两大好处,节约磁盘空间,加速数据在网络和磁盘上的传输. 方式一:在代码中进行设置压缩 代码: ...
- 第2节 mapreduce深入学习:7、MapReduce的规约过程combiner
第2节 mapreduce深入学习:7.MapReduce的规约过程combiner 每一个 map 都可能会产生大量的本地输出,Combiner 的作用就是对 map 端的输出先做一次合并,以减少在 ...
- 第2节 mapreduce深入学习:6、MapReduce当中的计数器
第2节 mapreduce深入学习:6. MapReduce当中的计数器 计数器是收集作业统计信息的有效手段之一,用于质量控制或应用级统计.计数器还可辅助诊断系统故障.如果需要将日志信息传输到map ...
- 第1节 MapReduce入门:11、mapreduce程序的入门
1.1.理解MapReduce思想 MapReduce思想在生活中处处可见.或多或少都曾接触过这种思想.MapReduce的思想核心是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景). ...
- 【MapReduce】一、MapReduce简介与实例
(一)MapReduce介绍 1.MapReduce简介 MapReduce是Hadoop生态系统的一个重要组成部分,与分布式文件系统HDFS.分布式数据库HBase一起合称为传统Hadoop的三 ...
- Hadoop 中HDFS、MapReduce体系结构
在网络环境方面,作为分布式系统,Hadoop基于TCP/IP进行节点间的通信和传输. 在数据传输方面,广泛应用HTTP实现. 在监控.通知方面,Hadoop等分布式大数据软件则广泛使用异步消息队列等机 ...
- [MapReduce] Google三驾马车:GFS、MapReduce和Bigtable
声明:此文转载自博客开发团队的博客,尊重原创工作.该文适合学分布式系统之前,作为背景介绍来读. 谈到分布式系统,就不得不提Google的三驾马车:Google FS[1],MapReduce[2],B ...
随机推荐
- jQuery选择器模糊匹配
<html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8&quo ...
- javascript之css常用属性
1. position : 属性值有absolute .fixed.relative absolute:生成绝对定位的元素,相对第一父元素进行定位: fixed : 生成绝对定位的元素,相对于浏览 ...
- 汽车OBD2诊断程序开发 (原文转载,思路很清晰!)
1.因TL718已经为你建立了物理层.数据链层和部分应用层的协议,所以只要OBD2标准应用层协议文本,ISO15031-5 或 SAE J1979(这两个协议是相同的内容). 2.TL718诊断 ...
- 求教jsp 问题,能在一台电脑上运行,不能在另外一台上运行?
package com.mvc; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.se ...
- mysql:通用查询日志general_log
1.通用查询日志:记录建立的客户端连接和执行的语句,通用查询日志默认情况下不是开启的,通用查询日志是以文本方式存放的 当需要采样分析的时候手工开启: SET Global general_log=1; ...
- huhamhire-hosts必备神器!
huhamhire-hosts 不用说你就知道是干嘛用的. 上地址: https://github.com/huhamhire/huhamhire-hosts https://hosts.huhamh ...
- 【总结】教你怎么将centos7打造成桌面系统
http://tieba.baidu.com/p/3379447850 centos吧
- 【Objective-C】2.自定义构造方法和description方法
1.Student.h 1 #import <Foundation/Foundation.h> 2 3 @interface Student : NSObject { 4 int _age ...
- (原创)fedora 17安装KVM虚拟机
1.安装KVM yum groupinstall Virtualization 'Virtualization Client' 2.安装api支持 yum install libvirt servic ...
- 《Pro Git》学习笔记
1.Git远程模型示意图 Remote:远程仓库 Repository:本地仓库 Index:暂存区 workspace:当前工作区 2.取得Git仓库 2.1 初始化新仓库 git init ...