关于MapReduce的争论

标签: mapreduce 争论 | 发表时间:2011-10-07 09:13 | 作者:星星 iDesperadO
出处:http://duanple.blog.163.com

作者:phylips@bmy 2010-10-03 

[序:关于MapReduce的争论,这篇<<MapReduce和并行数据库,朋友还是敌人?(zz)>>已经进行了展开。不过我通常对这方面的内容持着浓厚的兴趣,所以还是再理一下,并将涉及的论文翻译了出来。] 

       首先是2008年1月8号David J. DeWitt和Michael Stonebraker发表了一篇文章<< MapReduce: A major step backwards>>。首先介绍下,这两位都是数据库领域的著名科学家,David J. DeWitt,ACM Fellow,2008年以前一直在大学里搞研究,在并行数据库领域建树颇多,之后去了微软在威斯康辛的Jim Gray系统实验室。Michael Stonebraker,名头要更大一些,在1992 年提出对象关系数据库。在加州伯克利分校计算机教授达25年,在此期间他创作了Ingres, Illustra, Cohera, StreamBase Systems和Vertica等系统。其中Ingres是很多现代RDBMS的基础,比如Sybase、Microsoft SQL Server、NonStop SQL、Informix 和许多其他的系统。Stonebraker曾担任过Informix的CEO,自己还经常出来创个业,每次还都成功了。其实即使在RDBMS领域,也可以看到Michael Stonebraker的一些激烈言论,比如<<Michael Stonebraker:主要的RDBMS都是过时的技术>>。可以看出他目前比较力挺列存式数据库,不过也是,Vertica都是他搞出来的,没理由不力挺下。

这篇文章发表之后,真是一石激起千层浪,很快文章被成千上万的人访问,很多人发出了质疑了声音,纷纷在文章后面留言发表评论,中间不乏激烈言辞。很快,到了1月25号,这两位又发了一篇<<MapReduce:(II)(zz)>>,以回应各种质疑。之后到了2009年6月,就在SIGMOD 09上出了这篇<<A Comparision of Approaches to Large-Scale Data Analysis>>,将并行数据库和MapReduce进行了详细的对比,其中就包含了<<MapReduce:(II)(zz)>>部分内容,并得出结论:与并行数据库相比,MapReduce有点弱。终于Google的两位大神Jeff Dean和Sanjay Ghemawat开始对此做出回应,于是在2010年1月份的<<Communication of the ACM>>上出现了这篇<<MapReduce-A Flexible Data Processing Tool>>。同一期上还刊了Michael Stonebraker等人的<<MapReduce and Parallel DBMSs-Friends or Foes >>。最终觉得大家是朋友,要相互学习嘛,化干戈为玉帛,算是为旷日持久的争论划上了个休止符。

其实看过这么多篇论文之后,有一个感觉,比如你看过某个系统最初的那篇原理性的内容之后呢,你可能大概了解了其中的原理。但是要再进一步的了解系统的设计,尤其是其中的缺陷,还是得看这样争论性反思性的文章。

 再具体点说,比如你看过<<The Google File System>>然后你就大概知道GFS的原理,然后就觉得这个东西就是NB,但是再看看<< Case Study GFS: Evolution on Fast-forward>>,你就觉得GFS也有这么多缺点啊。Hadoop也是一样,用的时候你觉得这个东西真不错,再看看<< The Hadoop Distributed File System>>你就了解HDFS的基本原理了,但是你再看看<<HDFS scalability-the limits to growth>>,你也会同样发现,当规模上到一定程度,它就搞不定了。如果你再看看<< Apache Hadoop Goes Realtime at Facebook(译)>>,你会发现不光HDFS,HBase也是问题多多。

MapReduce也是一样,看过<< MapReduce: Simplied Data Processing on Large Clusters>>,你大概知道了个原理,看过这些争论之后,对此的理解会更深一层。 

参考文献:

http://databasecolumn.vertica.com/database-innovation/mapreduce-a-major-step-backwards/

http://databasecolumn.vertica.com/database-innovation/mapreduce-ii/

http://hi.baidu.com/hexiong/blog/item/de4cebc481ba27a58326ac05.html

 

 

相关 [mapreduce 争论] 推荐:

关于MapReduce的争论

- iDesperadO - 银河里的星星
作者:phylips@bmy 2010-10-03 . [序:关于MapReduce的争论,这篇<>.

Mapreduce小结

- MAGI-CASPER/Peter Pan - 博客园-唯有前进值得敬仰
读完mapreduce论文小结一下. 1.MapReduce是一个编程模型,封装了并行计算、容错、数据分布、负载均衡等细节问题. 输入是一个key-value对的集合,中间输出也是key-value对的集合,用户使用两个函数:Map和Reduce. Map函数接受一个输入的key-value对,然后产生一个中间key-value 对的集合.

Hadoop MapReduce技巧

- - 简单文本
我在使用Hadoop编写MapReduce程序时,遇到了一些问题,通过在Google上查询资料,并结合自己对Hadoop的理解,逐一解决了这些问题. Hadoop对MapReduce中Key与Value的类型是有要求的,简单说来,这些类型必须支持Hadoop的序列化. 为了提高序列化的性能,Hadoop还为Java中常见的基本类型提供了相应地支持序列化的类型,如IntWritable,LongWritable,并为String类型提供了Text类型.

MapReduce原理

- - C++博客-牵着老婆满街逛
       MapReduce 是由Google公司的Jeffrey Dean 和 Sanjay Ghemawat 开发的一个针对大规模群组中的海量数据处理的分布式编程模型. MapReduce实现了两个功能. Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集. 而Reduce是把从两个或更多个Map中,通过多个线程,进程或者独立系统并行执行处理的结果集进行分类和归纳.

MapReduce优化

- - 行业应用 - ITeye博客
相信每个程序员在 编程时都会问自己两个问题“我如何完成这个任务”,以及“怎么能让程序运行得更快”. 同样,MapReduce计算模型的多次优化也是为了更好地解答这两个问题. MapReduce计算模型的优化涉及了方方面面的内容,但是主要集中在两个方面:一是计算性能方面的优化;二是I/O操作方面的优化.

Spark与Mapreduce?

- - 崔永键的博客
我本人是类似Hive平台的系统工程师,我对MapReduce的熟悉程度是一般,它是我的底层框架. 我隔壁组在实验Spark,想将一部分计算迁移到Spark上. 年初的时候,看Spark的评价,几乎一致表示,Spark是小数据集上处理复杂迭代的交互系统,并不擅长大数据集,也没有稳定性. 但是最近的风评已经变化,尤其是14年10月他们完成了Peta sort的实验,这标志着Spark越来越接近替代Hadoop MapReduce了.

Google Percolator替代MapReduce

- Hao - Solidot
Google在新一代内容索引系统中放弃了MapReduce,替代者是尚不为人知的分布式数据处理系统Percolator. The Register报道,Percolator是一种增量处理平台,它能持续更新索引系统,无需从头重新处理一遍整个系统. Google的工程师计划在下个月举行的年度USENIX Symposium 会议上公布Percolator相关论文.

下一代Hadoop MapReduce

- Jia - NoSQLFan
本文来自Hadoop Summit大会的一个演讲稿,主讲是Hadoop核心开发团队的Arun C Murthy (@acmurthy),同时他也是Yahoo!刚刚剥离的Hadoop独立公司Hortonworks的 Founder和架构师. 演讲中他讲述了现在的Hadoop存在的一些问题和集群上限,并展望了下一代Hadoop和其MapReduce将会得到的巨大提升.

MapReduce执行流程

- - CSDN博客云计算推荐文章
MapReduce的大体流程是这样的,如图所示:. 由图片可以看到mapreduce执行下来主要包含这样几个步骤. 1.首先对输入数据源进行切片. 2.master调度worker执行map任务. 3.worker读取输入源片段. 4.worker执行map任务,将任务输出保存在本地. 5.master调度worker执行reduce任务,reduce worker读取map任务的输出文件.

MapReduce编程模型

- - CSDN博客云计算推荐文章
MapReduce是一个Google发明的编程模型,也是一个处理和生成超大规模数据集的算法模型的相关实现. 用户首先创建一个Map函数处理一个基于对的数据集合,输出的中间结果基于对的数据集合,然后再创建一个Reduce函数用来合并所有的具有相同中间Key值的中间Value值.