MapReduce Versus Parallel DBMS

http://duanple.blog.163.com/blog/static/7097176720118179143877/

在 2010年1月的ACM上,有两篇文章非常吸引人注意。一篇文章是Google的Jeffrey Dean、Sanjay Ghemawat发表的标题为《MapReduce:一个灵活的数据库处理工具》,另一篇文章是Michael Stonebraker、Daniel Abadi、 David J. DeWitt、Sam Madden、Erik Paulson、Andrew Pavlo、Alexander、Rasin等人发表的《MapReduce和并行数据库:是朋友还是敌人?》。这两篇文章让我想起去年初Michael Stonebraker等人就MapReduce发表的一些评论而导致了一次MapReduce和数据库系统的大辩论。那篇文章的标题是《MapReduce:一个巨大的倒退》。这次辩论双方则准备了丰富的实践和实验案例。看上去更加有趣也更加有说服力。以下“正方”代表坚持并行数据库解决方案的Andrew Pavlo、 Michael Stonebraker等,而反方则是Google的MapReduce(下文简称MR)的拥趸Jeffrey Dean、Sanjay Ghemawat等。时间顺序如下:


正方抛出观点。2009 年Andrew Pavlo等人发表了一篇标题为《大规模数据分析的方法对比》(http://database.cs.brown.edu/projects/mapreduce-vs-dbms/ )的文章,里面对比了数据库和MR两种大规模数据分析方法的对比。通过对比流行的MR软件 Hadoop和一种并行数据库之间的架设、使用和性能等方面的异同,指出MR并不是解决大规模数据分析的好方法,其在性能、易用性等方面有诸多问题:


反方接招。

除了这些之外,反方还抛出了几块大砖头,等着正方接招:


正方的回应。作为正方,Michael Stonebraker 教授等人在同一期杂志上发表了另外一篇文章,很有趣的是刚好排在反方的文章之前。这篇文章以批评与自我批评的方式提出了若干有趣的观点,其中有些刚好是对反方的一个回应:MR系统可以用于(注意:不是胜出)下列场合:

正方认为,把适合于数据库的工作交给MR去做结果其实并不好。在正方的试验里,证实了MR更加适用于做数据转换和装载的(ETL)工作,在这些场合,MR可以成为并行数据库的良好补充,而不是替代品。为了证明上述论点,正方做了一些有趣的试验,试验对比的双方是并行数据库集群和Hadoop集群,试验的主要内容有:

针对上面的结果,正方做了一些分析,认为这些差距的来源主要来自于具体实现,而非并行数据库模型和MR模型之间的差异。比如,MR可以使用并行数据库为低层的存储,所以所有分析都针对现实中两种模式的具体实现。正方分析了导致差距的几个实现相关的架构原因:

正方经过试验得出的结论是:MR和并行数据库结合是最好的方案,MR负责数据装载、转换等工作,并行数据库负责查询密集型的任务。正方最后发出的振聋发聩的呼吁是:很多事情并行数据库系统已经做得很好了,我们为什么不站在这个巨人的肩膀上?