mapreduce小结
(不断更新)
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 程序的流程及设计思路
简单回顾一下,目前系统是WCF三层C/S插件系统.服务器端是WCF程序寄宿在IIS中,其中我的配置设计是长连接,客户端支持多线程,一个volatile的实例对象.客户端用Winform,其中客户端框架 ...
- MapReduce编程小结
(1)key-value到map端比较容易,每个分片都会交由一个MapTask,而每个分片由InputFormat(一般是FileInputFormat)决定(一般是64M), 每个MapTask会 ...
- mapreduce任务失败、重试、猜測式运行机制小结
mapreduce中我们自己定义的mapper和reducer程序在运行后有可能遇上出错退出的情况,mapreduce中jobtracker会全程追踪任务的运行情况,对于出错的任务mapreduce也 ...
- MapReduce剖析笔记之五:Map与Reduce任务分配过程
在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体 ...
- MongoDB使用小结:一些不常见的经验分享
最近一年忙碌于数据处理相关的工作,跟MongoDB打交道极多,以下为实践过程中的Q&A,后续会不定期更新补充. 另有<MongoDB使用小结:一些常用操作分享>,注:本文完成时Mo ...
- MongoDB使用小结:一些常用操作分享
本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程. MongoDB的使用之前也分享过一篇, ...
- Linux操作、hadoop和sh脚本小结
近期一直在忙项目上的事情,今天对以前的工作做一个简单的小结.明天就是国庆节啦. 1 脚本可以手动执行,可是crontab缺总是找不到路径? #!/bin/bash. /etc/profile . / ...
- MapReduce 计算模型
前言 本文讲解Hadoop中的编程及计算模型MapReduce,并将给出在MapReduce模型下编程的基本套路. 模型架构 在Hadoop中,用于执行计算任务(MapReduce任务)的机器有两个角 ...
- [大牛翻译系列]Hadoop(5)MapReduce 排序:次排序(Secondary sort)
4.2 排序(SORT) 在MapReduce中,排序的目的有两个: MapReduce可以通过排序将Map输出的键分组.然后每组键调用一次reduce. 在某些需要排序的特定场景中,用户可以将作业( ...
随机推荐
- 为什么我的联想打印机M7450F换完墨粉之后打印机显示请更换墨粉盒?这是我的墨盒第一次灌粉·、
需要打印机清零,可以网上查到的,要不就去买颗芯片换上关掉机器 →开机的同时按住功能按扭不松手开机→进入维修模式→翻到84功能项→按OK→用下翻键找到PROCESS CHECK→按OK 按扭→关机→正常 ...
- shell 中的引用
1. 什么叫引用对 shell 脚本.程序.终端命令.变量.字符串等结果的反馈.2. 引用的类型 " " 双引号 ` 反引号' ' 单引号 ...
- 郎科U208(主控 PS2251-50 HYNIX H27UCG8T2MYR)量产还原
6年前的一个U盘 记得还是参加某会议送的,当时做了量产 多做了一个光盘区,现在用不着了 想还原成普通U盘 忘了方法. 可见笔记的重要性 Chipgenius看了主控 PS2251-50 芯片是海力士 ...
- ArcGIS Server 缓存服务切图范围
win10 + Server 10.4 + ArcMap 10.4 ArcGIS Server 缓存服务分为创建服务后手动建立缓存和创建服务时同时自动建立缓存两种. 10.2帮助文档:http:/ ...
- Java保留两位小数的几种做法
1. String类型数字始终保留两位小数 , RoundingMode.HALF_UP); return bd.toString(); } /** * 使用DecimalFormat,保留小数点后 ...
- Comparable与Comparator
转载 Comparable与Comparator的区别 (转载) Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部 ...
- css中IE6fix问题
.g-popup-mask, .g-popup-box { position:fixed; top:0; left:0; z-index:10000; _position:absolute; _top ...
- .Net Install类的Install、Commit等事件触发顺序
.Net Install类的Install.Commit等事件触发顺序 空间 首先是Install其中调用base.Install过程中导致OnBeforeInstallOnAfterInstal ...
- QT中的SOCKET编程(QT-2.3.2)
转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...
- Qt通过QToolTip显示浮动信息
QToolTip类的应用十分简单,其QToolTip类中全都是静态方法,如果要显示浮动信息的话使用该函数即可: void QToolTip::showText ( const QPoint & ...