(不断更新)

MapReduce架构是一种分布式编程架构,它本质上是将任务划分,然后归并。它是以数据为中心的编程架构,相比与分布式计算和并行计算等,它更看重的是吞吐率。它处理的数据是PB级的数据,它并不是新技术,而是一个总结。在数据存储和处理上,它曾经被质疑,被认为是数据库技术的一个倒退,数据库的3个经验:

1.结构描述是好的

2.将结构从程序中分离是好的

3.高阶的访问语言是好的

它一个都不具备,MR编程者需要用到c等低阶语言来处理低阶数据的问题。MR不具备数据斜交的问题,比如数据库中多表查询的能力。

它的优势应该在于它的容错能力和可扩展性。它的优秀的扩展能力是使它的地位不断攀高的主要因素,强大的容错性也使得它稳定性很高。其实,MR很容易理解,正象google一直倡导的用最简单的方式处理问题往往是最高效的。它的思想可以总结为将处理的文件分割成多份,从而划分任务,然后将任务归并起来完成任务。就是一个分-聚的过程,它可以完成很多类型的任务,但不是所有的。

MR中reduce任务采用拉的方式,数据的获取在多任务的情况下可能会造成磁盘效率非常低下,这种情况是磁盘的读取引起的,当然它也有它的优势,它可以减少系统资源(推的过程必须知道要推到哪里,也就是说map阶段未完成,reduce阶段就要开启,很好理解,就是要知道推给谁)。

MR是对数据的一种批处理,没有事务、索引之类数据库支持,可以说在数据的处理上是一种倒退,但是通过象bigtable和hbase的补充,这种倒退可以说是减少了很多。MR是对大数据量数据处理模型,对于小型或者计算密集性完全无用武之地。

一直有个疑问,mapreduce为什么要有sort阶段,因为这是一个即费时又用处不大的阶段,因为不是所有的应用都用到sort,如果说只是为了方面一些应用,那大可不必,当然,google的应用大多数都需要排序。我是考虑如果扩展mapreduce编程模型,可以考虑去掉sort阶段。

shuffle阶段是mapreduce的核心,它能够左右性能,因为划分任务有两次。一次是任务开始时,一次是任务归并时。任务开始时,由输入数据进行划分,是个固定的办法,但任务归并时,需要机群来处理,这时候shuffle起到了至关重要的作用,就象是任务调度一样,也是个核心的阶段。

参:深入理解MapReduce架构

mapreduce小结的更多相关文章

  1. 小结MapReduce 程序的流程及设计思路

    简单回顾一下,目前系统是WCF三层C/S插件系统.服务器端是WCF程序寄宿在IIS中,其中我的配置设计是长连接,客户端支持多线程,一个volatile的实例对象.客户端用Winform,其中客户端框架 ...

  2. MapReduce编程小结

    (1)key-value到map端比较容易,每个分片都会交由一个MapTask,而每个分片由InputFormat(一般是FileInputFormat)决定(一般是64M),  每个MapTask会 ...

  3. mapreduce任务失败、重试、猜測式运行机制小结

    mapreduce中我们自己定义的mapper和reducer程序在运行后有可能遇上出错退出的情况,mapreduce中jobtracker会全程追踪任务的运行情况,对于出错的任务mapreduce也 ...

  4. MapReduce剖析笔记之五:Map与Reduce任务分配过程

    在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体 ...

  5. MongoDB使用小结:一些不常见的经验分享

    最近一年忙碌于数据处理相关的工作,跟MongoDB打交道极多,以下为实践过程中的Q&A,后续会不定期更新补充. 另有<MongoDB使用小结:一些常用操作分享>,注:本文完成时Mo ...

  6. MongoDB使用小结:一些常用操作分享

    本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程. MongoDB的使用之前也分享过一篇, ...

  7. Linux操作、hadoop和sh脚本小结

    近期一直在忙项目上的事情,今天对以前的工作做一个简单的小结.明天就是国庆节啦. 1  脚本可以手动执行,可是crontab缺总是找不到路径? #!/bin/bash. /etc/profile . / ...

  8. MapReduce 计算模型

    前言 本文讲解Hadoop中的编程及计算模型MapReduce,并将给出在MapReduce模型下编程的基本套路. 模型架构 在Hadoop中,用于执行计算任务(MapReduce任务)的机器有两个角 ...

  9. [大牛翻译系列]Hadoop(5)MapReduce 排序:次排序(Secondary sort)

    4.2 排序(SORT) 在MapReduce中,排序的目的有两个: MapReduce可以通过排序将Map输出的键分组.然后每组键调用一次reduce. 在某些需要排序的特定场景中,用户可以将作业( ...

随机推荐

  1. 总结的一些PHP开发中的tips

    总结的一些PHP开发中的tips 发布时间:2013-05-28 12:47:44   来源:   评论:0 点击: 次 [字号:大 中 小] QQ空间新浪微博腾讯微博人人网豆瓣网百度空间百度搜藏开心 ...

  2. T-SQL笔记

    主要是查询: select *|Cols_Name|聚合函数 from Table_Name;#这是基本的语法 聚合函数: count(*|Cols_Name)   计算表的数量 max(*|Cols ...

  3. delphi 创建DBASE和FOXPRO两类DBF数据文件的差异

    delphi 创建DBASE和FOXPRO两类DBF数据文件的差异,主要有几点: 1.创建方法不同 DBASE的创建方法: Self.Table1.Close; Self.Table1.Active ...

  4. SQL优化(zhuan)

    转自:http://www.jfox.info/SQL-you-hua 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S ...

  5. 原生js实现跑马灯抽奖效果

    目前好多的微信活动都有一些抽奖活动,其中就有跑马灯. <!DOCTYPE html> <html> <head> <title>跑马灯效果</ti ...

  6. 在XE5中 VCL空窗体的3个线程

    中午看到技术群里有人讨论, XE5一个空窗体程序就包含了3个线程, 赶忙打开XE5开了个空窗体一看, 果然如此 再打开D7和2010看了一下, 都是一个线程 这时看到有人说一个是输入法, 一个是GDI ...

  7. 低功耗蓝牙4.0BLE编程-nrf51822开发(5)-链路层

    链路层定义设备处于状态机中五种状态的一种: (1)旁路状态: 处于此状态下的设备不发送或接收数据,处于其它状态下都可以转到此状态. (2)广告状态: 处于此状态的设备发送广播包或者监听.响应广播包.可 ...

  8. 【转】java正则表达式

    在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu ...

  9. CLH锁 、MCS锁

    一.引文 1.1 SMP(Symmetric Multi-Processor) 对称多处理器结构,指服务器中多个CPU对称工作,每个CPU访问内存地址所需时间相同.其主要特征是共享,包含对CPU,内存 ...

  10. [LeetCode]题解(python):089 Gray Code

    题目来源 https://leetcode.com/problems/gray-code/ The gray code is a binary numeral system where two suc ...