第十五章 大数据与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的更多相关文章

  1. 【机器学习实战】第15章 大数据与MapReduce

    第15章 大数据与MapReduce 大数据 概述 大数据: 收集到的数据已经远远超出了我们的处理能力. 大数据 场景 假如你为一家网络购物商店工作,很多用户访问该网站,其中有些人会购买商品,有些人则 ...

  2. 大数据技术 - MapReduce的Combiner介绍

    本章来简单介绍下 Hadoop MapReduce 中的 Combiner.Combiner 是为了聚合数据而出现的,那为什么要聚合数据呢?因为我们知道 Shuffle 过程是消耗网络IO 和 磁盘I ...

  3. 大数据技术 - MapReduce的Shuffle及调优

    本章内容我们学习一下 MapReduce 中的 Shuffle 过程,Shuffle 发生在 map 输出到 reduce 输入的过程,它的中文解释是 “洗牌”,顾名思义该过程涉及数据的重新分配,主要 ...

  4. 大数据开篇 MapReduce初步

    最近在学习大数据相关的东西,开这篇专题来记录一下学习过程.今天主要记录一下MapReduce执行流程解析 引子(我们需要解决一个简单的单词计数(WordCount)问题) 1000个单词 嘿嘿,100 ...

  5. FusionInsight大数据开发---MapReduce与YARN应用开发

    MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...

  6. 大数据技术 —— MapReduce 简介

    本文为senlie原创,转载请保留此地址:http://www.cnblogs.com/senlie/ 1.概要很多计算在概念上很直观,但由于输入数据很大,为了能在合理的时间内完成,这些计算必须分布在 ...

  7. 大数据开发 | MapReduce介绍

    1.  MapReduce 介绍 1.1MapReduce的作用 假设有一个计算文件中单词个数的需求,文件比较多也比较大,在单击运行的时候机器的内存受限,磁盘受限,运算能力受限,而一旦将单机版程序扩展 ...

  8. 大数据技术 - MapReduce 作业的运行机制

    前几章我们介绍了 Hadoop 的 MapReduce 和 HDFS 两大组件,内容比较基础,看完后可以写简单的 MR 应用程序,也能够用命令行或 Java API 操作 HDFS.但要对 Hadoo ...

  9. 大数据框架-Mapreduce过程

    1.Shuffle [从mapTask到reduceTask: Mapper -> Partitioner ->Combiner -> Sort ->Reducer] mapp ...

随机推荐

  1. Mybatis插件原理分析(二)

    在上一篇中Mybatis插件原理分析(一)中我们主要介绍了一下Mybatis插件相关的几个类的源码,并对源码进行了一些解释,接下来我们通过一个简单的插件实现来对Mybatis插件的运行流程进行分析. ...

  2. TCP的定时器系列 — 零窗口探测定时器

    主要内容:零窗口探测定时器的实现. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 出现以下情况时,TCP接收方的接收缓冲区将被塞满数据: 发送方的发送速 ...

  3. Could not find property 'outputFile

    * What went wrong: A problem occurred configuring project ':app'. > Could not find property 'outp ...

  4. mongoDB常见的查询索引(三)

    1. _id索引     _id索引是绝大多数集合默认建立的索引     对于每个插入的数据,MongoDB会自动生成一条唯一的_id字段. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  5. Python基础:条件判断与循环的两个要点

    一.条件判断: Python中,条件判断用if语句实现,多个条件判断时用if...elif实现:看下面一段程序 #python 3.3.5 #test if...elif age = 20 if ag ...

  6. PR 审批界面增加显示项方法

    PR 审批界面增加显示项 解决方法 Step 1:       进入审批界面: Step 2:       在上图中,点击左下角'About this Page'查看数据源 点击上图中'Expand ...

  7. 【公开课】【阿里在线技术峰会】魏鹏:基于Java容器的多应用部署技术实践

    对于公开课,可能目前用不上这些,但是往往能在以后想解决方案的时候帮助到我.以下是阿里对公开课的整理 摘要: 在首届阿里巴巴在线峰会上,阿里巴巴中间件技术部专家魏鹏为大家带来了题为<基于Java容 ...

  8. STL - 容器共性机制研究

    C++模板是容器的概念. 理论提高:所有容器提供的都是值(value)语意,而非引用(reference)语意.容器执行插入元素的操作时,内部实施拷贝动作.所以STL容器内存储的元素必须能够被拷贝(必 ...

  9. Java学习笔记(一)网格袋布局

    网格袋布局类似于Win8的Metro布局,用于将组件按大小比例放在不同位置的网格内,各组件的实际大小会随着窗口的改变而改变,但相对位置不变,能够很好的适应屏幕. 通过阅读<21天学通Java&g ...

  10. 【Visual C++】游戏编程学习笔记之三:游戏循环的使用

     本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...