大数据与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 ...
随机推荐
- android binder理解
Android中的Parcel是什么 Parcel,翻译过来是"打包"的意思.打包干什么呢?是为了序列化. 如果要在进程之间传递一个整数,很简单,直接传就是行了:如果要传 ...
- 敏捷测试(4)--基于story的敏捷基础知识
基于story的敏捷基础知识----需求管理(一) 基于story进行需求管理 (1)使用story模式来管理需求,将庞大的MRD划分为一个个合适粒度,且可独立交付的story(通常每个story能在 ...
- javascript语法之函数的定义
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析
. Android源码看的鸭梨大啊, 补一下C语言基础 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/detai ...
- 理解WebKit和Chromium: Chromium网络栈
转载请注明原文地址:http://blog.csdn.net/milado_nju ## 概述 前面讲到Chromium的资源加载机制,在调用栈上,提到URLRequest之后就戛然而止,在这之下就是 ...
- Android和iOS中Cocos2D日志为什么会出现skip frames
在你运行app在Android或iOS设备或iOS模拟器中时,日志里往往会出现一行: I/Choreographer(28956): Skipped 159 frames! The applicati ...
- java工具类(四)之实现日期任意跳转
Java实现日期任意跳转 项目开发过程中,需要进行订单提醒日期的设置,主要包括设置每月指定的日期或者指定的天数,代码如下: public static String DateOperation(Str ...
- java工具类(六)根据经纬度计算距离
Java实现根据经纬度计算距离 在项目开发过程中,需要根据两地经纬度坐标计算两地间距离,所用的工具类如下: Demo1: public static double getDistatce(double ...
- 队列顺序存储 - 设计与实现 - API函数
队列是一种特殊的线性表 队列仅在线性表的两端进行操作 队头(Front):取出数据元素的一端 队尾(Rear):插入数据元素的一端 队列不允许在中间部位进行操作! queue常用操作 销毁队列 清空队 ...
- 苹果新的编程语言 Swift 语言进阶(十三)--类型检查与类型嵌套
一 类型检查 1. 类型检查操作符 类型检查用来检查或转换一个实例的类型到另外的类型的一种方式. 在Swift中,类型检查使用is和as操作符来实现. is操作符用来检查一个实例是否是某种特定类型,如 ...