第十五章 大数据与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. [asp.net]登录协同工作平台安全解决方案

    [摘要]公司领导说登录验证的安全性如何保证,建议采用UKEY验证类似网银解决,调用第三方YT公司产品. 解决方案: 前端页面: <embed id="s_simnew61" ...

  2. C++ Primer 有感(面向对象编程)

    1.除了构造函数之外,任意非static成员函数都可以是虚函数.保留字virtual只在类内部的成员函数声明处出现,不能用在类定义体外部出现的函数定义上. 2.派生类只能通过派生类对象访问其基类的pr ...

  3. 序列化与反序列化中serialVersionUID的作用(通俗易懂)

    serialVersionUID:字面意思上是序列化的版本号,这个在刚刚接触java编程时,学序列化大家一般都不会注意到,在你一个类序列化后除非你强制去掉了myeclipse中warning的功能,在 ...

  4. python检测变量是否有定义(即使用前检查是否定义好)

    http://www.cnblogs.com/starspace/archive/2008/12/03/1347007.html 第一种方法: 'var' in locals().keys() 第二种 ...

  5. leetcode 204题求素数个数

        Description: Count the number of prime numbers less than a non-negative number, n 提示晒数法: http:// ...

  6. 使用GDAL将下载的Google卫星图像转为带坐标的tif

    网上有很多下载Google地图的卫片的软件,一般下载下来的图像都是jpg格式的,另外附带一个坐标信息的描述文件.这样的数据不能直接拿来在遥感或者GIS软件中使用,因为图像里面没有投影和坐标信息,所以就 ...

  7. 关于post利用之Python

    今天大师兄放出了自己用PHP写的KTV点歌系统,注明,欢迎调戏,于是乎就尝试了下. 地址就不上了,到现在没补漏洞,我可不想被大师兄K…… 首先试试JavaScript脚本能否恶搞下 来个最基础的警告框 ...

  8. android开发之http协议

    http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web C ...

  9. TCP的核心系列 — SACK和DSACK的实现(二)

    和18版本相比,37版本的SACK和DSACK的实现做了很多改进,最明显的就是需要遍历的次数少了, 减少了CPU的消耗.37版的性能提升了,代码有大幅度的改动,逻辑也更加复杂了. 本文主要内容:37版 ...

  10. SlopOne 改进

    lope One 其基本的想法来自于简单的一元线性模型 $w = f(v) = v + b$.已知一组训练点 ${(v_i, w_i)}_{i=1}^n$,利用此线性模型最小化预测误差的平方和,我们可 ...