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. 在某些需要排序的特定场景中,用户可以将作业( ...
随机推荐
- 总结的一些PHP开发中的tips
总结的一些PHP开发中的tips 发布时间:2013-05-28 12:47:44 来源: 评论:0 点击: 次 [字号:大 中 小] QQ空间新浪微博腾讯微博人人网豆瓣网百度空间百度搜藏开心 ...
- T-SQL笔记
主要是查询: select *|Cols_Name|聚合函数 from Table_Name;#这是基本的语法 聚合函数: count(*|Cols_Name) 计算表的数量 max(*|Cols ...
- delphi 创建DBASE和FOXPRO两类DBF数据文件的差异
delphi 创建DBASE和FOXPRO两类DBF数据文件的差异,主要有几点: 1.创建方法不同 DBASE的创建方法: Self.Table1.Close; Self.Table1.Active ...
- SQL优化(zhuan)
转自:http://www.jfox.info/SQL-you-hua 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S ...
- 原生js实现跑马灯抽奖效果
目前好多的微信活动都有一些抽奖活动,其中就有跑马灯. <!DOCTYPE html> <html> <head> <title>跑马灯效果</ti ...
- 在XE5中 VCL空窗体的3个线程
中午看到技术群里有人讨论, XE5一个空窗体程序就包含了3个线程, 赶忙打开XE5开了个空窗体一看, 果然如此 再打开D7和2010看了一下, 都是一个线程 这时看到有人说一个是输入法, 一个是GDI ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(5)-链路层
链路层定义设备处于状态机中五种状态的一种: (1)旁路状态: 处于此状态下的设备不发送或接收数据,处于其它状态下都可以转到此状态. (2)广告状态: 处于此状态的设备发送广播包或者监听.响应广播包.可 ...
- 【转】java正则表达式
在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu ...
- CLH锁 、MCS锁
一.引文 1.1 SMP(Symmetric Multi-Processor) 对称多处理器结构,指服务器中多个CPU对称工作,每个CPU访问内存地址所需时间相同.其主要特征是共享,包含对CPU,内存 ...
- [LeetCode]题解(python):089 Gray Code
题目来源 https://leetcode.com/problems/gray-code/ The gray code is a binary numeral system where two suc ...