第十五章 大数据与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. Android实现自定义的相机

    使用系统相机 android中使用系统相机是很方便的,单这仅仅是简单的使用而已,并不能获得什么特殊的效果. 要想让应用有相机的action,咱们就必须在清单文件中做一些声明,好让系统知道,如下 < ...

  2. Java实现二叉树的创建和遍历操作(有更新)

    博主强烈建议跳过分割线前面的部分,直接看下文更新的那些即可. 最近在学习二叉树的相关知识,一开始真的是毫无头绪.本来学的是C++二叉树,但苦于编译器老是出故障,于是就转用Java来实现二叉树的操作.但 ...

  3. Spark1.4从HDFS读取文件运行Java语言WordCounts并将结果保存至HDFS

    本次实验相关信息如下: 操作系统:Ubuntu 14 Hadoop版本:2.4.0 Spark版本:1.4.0 运行前提是Hadoop与Spark均已正确安装配置 2.在Linux中生成一个文件tes ...

  4. [TCP] 网络协议流程图

    之前在跟别人讲协议的时候总是找不到类似的图,这次再看python网络编程书籍的时候找到了一个,留存一份. 清晰的看到不同协议在不同层的传输过程!

  5. java实现http的post和get

    前话说一句:conn.setDefaultRequestProperty(key, value);这个函数是设置属性的,其实可以没有!   自己写了一个简单的get,容易控制 public stati ...

  6. 【一天一道LeetCode】#50. Pow(x, n)

    一天一道LeetCode系列 (一)题目 Implement pow(x, n). (二)解题 题目很简单,实现x的n次方. /* 需要注意一下几点: 1.n==0时,返回值为1 2.x==1时,返回 ...

  7. Gradle 1.12用户指南翻译——第二十一章. Gradle 插件

    昨天晚上只顾着和女朋友看<匆匆那年>电视剧的最后几集,所以说好的Android文档<Gradle 插件用户指南>第五章自然也没翻译多少.所以今天也发不了第五章的翻译了,就发几个 ...

  8. Oracle中添加自动编号的序列

    1. 创建表T_Test create table T_Test(id int  ,address char(25), pay int); 2. 创建自增序列 create sequence SEQ_ ...

  9. Oracle EBS 重新编译无效对象 invalid object

    1.  查看数据库中的无效对象      check oracle object      SQL> select count(*) from dba_objects where status= ...

  10. TrueType和Bitmap字体的区别

    只要标签的文本从不变化,在cocos2D中渲染TrueType和bitmap字体的性能是相同的.它们都仅仅像精灵那样绘制. 如果你希望大量的标签使用相同字体,则bitmap字体将更快.因为bitmap ...