mapreduce 基础内容

MapReduce:分布式计算框架,用来分解大数据量的处理

Map阶段对数据集上的独立元素进行指定的操作,生成键值对形成中间结果,Reduce阶段对中间结果中相同的键的所有值进行规约,以得到最终的结果。

优点:

1)易于编程:简单的实现一些接口

2)可扩展性当计算资源不足时,通过增加机器可以扩展他的计算能力

3)高容错性:当一台机器挂了,会把机器上的计算任务转移到另外的一个节点上

缺点:不适合实时的统计处理(流式计算),MapReduce处理的数据是静态的。例如:处理历史数据,(因为每次的运算结果都是到磁盘,如果再次处理要先进行读磁盘)

我们先认识以下几类:

1)Mapper:是一个泛型类型,有四个形参,分别是map函数的输入键、输入值、输出键、输出值。泛型类型的形参只能是引用类型,不能是原始类型(如int、double、char)输出类型为(key-Value pair)

2)Shuffle:数据的迁移Map到Reduce阶段。

3)Combine:(局部统计:针对的是一个map的统计,最小化对数据的迁移)。

4)Partitioner:是分区处理器他把key的hash拿到值对3取模,如果值为0放到第一个Reducer,如果值为1放入第二个Reducer,如果值为2放入第三个Reducer,不管每个mapper输送过来的key,只要key相同就会进入同一个Reducer。

5)Reduce:进行的一个全局统计接受每一个Map的统计,按照所有的key值拿过来进行统计。

MapReduce基本原理

1)map:读取的数据进入到环状缓冲区(100m)

读到80%,会将缓冲区的文件传入磁盘,当缓冲区写到磁盘的时候会进行分区,排序,combin会进行分区排序,而溢出的文件会生成溢出文件,最后会将这些文件统计进行排序分区,等待reduce前来取走

2)reduce:根据hash计算好的map去取值,然后合并文件,按照内部的k/v进行归并排序,再根据key进行分组。

原文地址:https://www.cnblogs.com/tudousiya/p/11241556.html

时间: 2024-08-03 02:10:24

mapreduce 基础内容的相关文章

3天学习完AngularJS基础内容小结

简介:AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库. 一.AngularJS大致功能模块 二.页面交互变得简单 1.示例:计算价格 <html> <head> <meta name="viewport" content="width=device-width" /> <meta charset="utf-8"> <script src=&q

HtmlParser学习之一:基础内容

1.相关资料 官方文档:http://htmlparser.sourceforge.net/samples.html API:http://htmlparser.sourceforge.net/javadoc/index.html 其它HTML 解释器:jsoup等.由于HtmlParser自2006年以后就再没更新,目前很多人推荐使用jsoup代替它. 2.使用HtmlPaser的关键步骤 (1)通过Parser类创建一个解释器 (2)通过Filter或者Vistor访问Html中的内容. 3

Objective-c学习笔记—— 基础内容

6.5.1 多重继承 Python也支持多种继承形式.一个能继承多个基类的类定义如下: class DerivedClassName(Base1, Base2, Base3): <statement-1> . . . <statement-N> 大多数情况,最简单而言,你可以把从父类继承下来的属性查询看成是遵循深度优先,从左到右. 而不是在同一等级重复的同样类中执行两次.因此,如果一个属性没在派生类中找到,首先会在base1然后再base1的基类中,如果在那里都没发现,就会在bas

node.js基础内容

node.js node.js是建立在谷歌Chrome的JavaScript引擎(v8)的web应用程序框架. node.js 自带的运行环境可在JavaScript脚本的基础上解释和执行.这个运行是运行在浏览器以外的任何机器上执行JavaScript代码.所以也可以在服务端运行,Node.js还提供了各种丰富的JavaScript模块库,它极大简化了使用Node.js来扩展Web应用程序的研究与开发. 特性 Node.js库的异步和事件驱动的API全部都是异步就是非阻塞.它主要是指基于Node

万树IT:Android软件开发必学习的0基础内容

如今安卓系统中国的前景市场是非常广阔的,它主要针对的是移动设备市场,而如今智能手机已经占据人们生活不能缺少的一部分.所以,很多行业投入到安卓软件开发,进入到安卓开发的人才也越来越多. 安卓应用软件开发必学习的5大基础内容: 1.编程语言 2.基础应用开发 3.核心组件开发Android论坛交流 4丶安卓论坛交流学习 5.深入开发 Android软件开发必学习的0基础内容 1.编程语言的学习 安卓应用软件开发中有很多的编程语言可以使用,所以应该重点学习以下几种编程语言. ①  C/C++语言.  

css基础内容

css基础内容 CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题外部样式表可以极大提高工作效率外部样式表通常存储在 CSS 文件中多个样式定义可层叠为一 一.css的引入方式 1.直接在html标签元素内嵌入css样式 <div style="font-size:14px; color:#FF0000;">行内引入</div&g

python学习之基础内容

python基础内容① 什么是python? -一种计算机语言,计算机语言分为 -高级语言:python.java.Ruby.C#.C++...... -基础语言:C语言.汇编 -计算机可以直接执行基础语言,但是基础语言比较复杂,敲代码很麻烦 -高级语言会自动转化为基础语言,再提供给计算机执行. 安装好python后,print("hello world") -python执行文件后缀名可以是任意的 -但是为了pycharm的执行方便,约定俗称使用“.py”后缀 python 的执行方

MapReduce(一) mapreduce基础入门

一.mapreduce入门 1.什么是mapreduce 首先让我们来重温一下 hadoop 的四大组件:HDFS:分布式存储系统MapReduce:分布式计算系统YARN: hadoop 的资源调度系统Common: 以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等 Mapreduce 是一个分布式运算程序的编程框架,是用户开发"基于 hadoop 的数据分析 应用"的核心框架Mapreduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的 分布式

MongoDB:MapReduce基础及实例

背景 MapReduce是个非常灵活和强大的数据聚合工具.它的好处是可以把一个聚合任务分解为多个小的任务,分配到多服务器上并行处理. MongoDB也提供了MapReduce,当然查询语肯定是JavaScript.MongoDB中的MapReduce主要有以下几阶段: 1. Map:把一个操作Map到集合中的每一个文档 2. Shuffle: 根据Key分组对文档,并且为每个不同的Key生成一系列(>=1个)的值表(List of values). 3. Reduce: 处理值表中的元素,直到值