大数据与Mapreduce
第十五章 大数据与Maprudece
一.引言
实际生活中的数据量是非常庞大的,采用单机运行的方式可能需要若干天才能出结果,这显然不符合我们的预期,为了尽快的获得结果,我们将采用分布式的方式,将计算分布到不同的机器上。Mapreduce就是一个典型的分布式框架,Hadoop则是用java编写的一个Mapreduce实现。
分布式和并行的区别在于分布式它将数据分布到不同的机器上,而并行只是将数据分布到同一簇中的不同节点上,它们的区别主要体现在物理载体层面上。
二.Mapreduce简介
Mapreduce是一个分布式计算的框架,从它的名字可以看出它主要有两个过程一个是mapper,另一个是reducer,另外在它们两者之间可能还会有sort或者merge的过程。mapper的过程就是将一个大的数据进行切片之后将它分布到若干个节点上,每一节点有它自己的算法,它会将结果映射为key/value这样的键值对。如果有sort或者merge的步骤,就将这些结果进行重新组织。reducer的过程就是将前面步骤得到的结果进行重新的切片,然后进行节点的分布,经过节点算法的运算之后就得到了最终的结果。
Mapreduce在进行数据分配的时候,为了避免一个节点宕机,而导致整个程序出错,它对同一份数据进行了多次备份并将它分配到多个节点上,这样就能避免一个节点宕机所带来的影响。Mapreduce之所以能够知道某个节点出错了,是因为它有一个主控节点,它管理了当前的所有的节点,通过主空节点与其他节点的通信我们就可以知道当前其他节点的状态。这里我们需要注意的是虽然主控节点可以与其他节点进行交流,但是其他节点之间是不能进行交流的,map任务之间不进行交流,reduce任务之间也不进行交流。
综上所述,关于Mapreduce我们需要知道以下几点:
1.主控节点控制了Mapreduce的作业流程
2.Mapreduce的作业可以分成map任务和reduce任务
3.map任务之间不做数据交流,reduce任务也一样
4.在map和reduce之间,有一个sort或combine阶段
5.数据被重复的放在不同的机器上,以防某个机器失效
6.mapper和reducer传输的数据形式是key/value
三.Hadoop流
Hadoop不仅可以进行分布式计算,而且它还具有分布式文件系统, 它是Mapreduce框架的一种java实现。Hadoop流就像linux中的管道一样,它能够将前一个命令的输出作为下一个命令的输入。也就是数据像流水一样在不同命令之间进行传递。Mapreduce中的数据需要从mapper流到sort,然后再到reducer,这符合Hadoop流的概念。
Hadoop本身是适用于java语言,对于非java语言我们就要使用Hadoop流
四.总结
当我们的数据量或者计算量很大的时候,我们可以考虑Hadoop和Mapreduce。其中Hadoop是Mapreduce的java实现。一个典型的作业流程是先使用map阶段并行处理数据,之后将数据在reduce阶段合并。这种多对一的模式是常见的,但是并不是唯一的。一般在map阶段之后还会对键值对key/value进行排序。
大数据与Mapreduce的更多相关文章
- 【机器学习实战】第15章 大数据与MapReduce
第15章 大数据与MapReduce 大数据 概述 大数据: 收集到的数据已经远远超出了我们的处理能力. 大数据 场景 假如你为一家网络购物商店工作,很多用户访问该网站,其中有些人会购买商品,有些人则 ...
- 大数据技术 - MapReduce的Combiner介绍
本章来简单介绍下 Hadoop MapReduce 中的 Combiner.Combiner 是为了聚合数据而出现的,那为什么要聚合数据呢?因为我们知道 Shuffle 过程是消耗网络IO 和 磁盘I ...
- 大数据技术 - MapReduce的Shuffle及调优
本章内容我们学习一下 MapReduce 中的 Shuffle 过程,Shuffle 发生在 map 输出到 reduce 输入的过程,它的中文解释是 “洗牌”,顾名思义该过程涉及数据的重新分配,主要 ...
- 大数据开篇 MapReduce初步
最近在学习大数据相关的东西,开这篇专题来记录一下学习过程.今天主要记录一下MapReduce执行流程解析 引子(我们需要解决一个简单的单词计数(WordCount)问题) 1000个单词 嘿嘿,100 ...
- FusionInsight大数据开发---MapReduce与YARN应用开发
MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...
- 大数据技术 —— MapReduce 简介
本文为senlie原创,转载请保留此地址:http://www.cnblogs.com/senlie/ 1.概要很多计算在概念上很直观,但由于输入数据很大,为了能在合理的时间内完成,这些计算必须分布在 ...
- 大数据开发 | MapReduce介绍
1. MapReduce 介绍 1.1MapReduce的作用 假设有一个计算文件中单词个数的需求,文件比较多也比较大,在单击运行的时候机器的内存受限,磁盘受限,运算能力受限,而一旦将单机版程序扩展 ...
- 大数据技术 - MapReduce 作业的运行机制
前几章我们介绍了 Hadoop 的 MapReduce 和 HDFS 两大组件,内容比较基础,看完后可以写简单的 MR 应用程序,也能够用命令行或 Java API 操作 HDFS.但要对 Hadoo ...
- 大数据框架-Mapreduce过程
1.Shuffle [从mapTask到reduceTask: Mapper -> Partitioner ->Combiner -> Sort ->Reducer] mapp ...
随机推荐
- Gradle 1.12 翻译——第十二章 使用Gradle 图形用户界面
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- MongoDB分组
MongoDB三种分组方式 group(先筛选再分组,不支持分片,对数据量有所限制,效率不高) [简单分组实测150W 12.5s] mapreduce(基于js引擎,单线程执行,效率较低,适合用做后 ...
- 使用github管理你的代码
关于为什么使用github,网上已经有很多讨论了.当然选择还有google code, Bitbucket,sourceforge.github有如下优势: 1. github更有利于开源项目的发展 ...
- JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类
JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Obj ...
- 敏捷测试(5)--基于story的敏捷基础知识
基于story的敏捷基础知识----需求管理(二) (1)定期发布 定期发布上线,把整个项目划分为一个个迭代,每个迭代时间大小固定(基本固定),迭代结束时上线交付一次. (2)迭代规划 迭代规划相当于 ...
- linux 下启动java jar包 shell
linux 下启动java jar包 shell #!/bin/sh JAVA_HOME=/usr/local/jdk1.6.0_34/bin/javaJAVA_OPTS="-Xmx256m ...
- [查阅]MSIL Instruction Set
Base Instructions Instruction Description Stack Transition 1 add add two values, returning a new v ...
- JavaScript进阶(十一)JsJava2.0版本
JavaScript进阶(十一)JsJava2.0版本 2007年9月11日,JsJava团队发布了JsJava2.0版本,该版本不仅增加了许多新的类库,而且参照J2SE1.4,大量使用了类的继承和实 ...
- iOS关于蓝牙连接的简单介绍与使用
下面是两台iPhone6连接同一台蓝牙设备的结果: **成功连接**** peripheral: <CBPeripheral: 0x1700f4500, identifier = 50084F6 ...
- CentOS 7下的Vim自动补齐插件YouCompleteMe安装及配置
备注:现在对于 YouCompleteMe 的安装应采用更为简单的方法,即利用 Vundle 来安装这个插件.具体方法可见: Vundle 主页 YouCompleteMe 主页 而 .vimrc 的 ...