为什么不改进MapReduce,而要取代它?

MapReduce的高延迟已经成为Hadoop发展的瓶颈,为当前的MapReduce寻找性能更高的替代品已成为Hadoop社区的一个共识。

MapReduce

有关MapReduce框架,最早要追溯到Google,Google将这个框架与灵活、可扩展性存储结合到一起,用以解决各类数据处理和分析任务。后来Doug Cutting和Mike Cafarella在2005年联合创立了Apache Hadoop时,采用的就是这个架构。

类似的项目,比如Apache Pig和Apache Hive,它们将专门的查询转化成可以运行在多功能MapReduce框架上的任务,同时也继承了MapReduce的可扩展性、容错能力、良好的吞吐能力还有糟糕的延迟,特别是Hive,延迟使其无力应付交互式应用。

关于MapReduce的抱怨使人们对企业数据中心和Hadoop项目的热情渐渐减少,MapReduce延迟太高,批处理模式响应也难以应对大量需要处理分析数据的应用。

Hadoop生态圈需要的是一个比MapReduce更加强大、更加灵活、更具实时性的系统。

Spark

如今MapReduce的主要替代者是Apache Spark。和MapReduce一样,它也是一个多功能引擎,但是Spark设计之初就考虑到运行更多的负载,而且速度更快。

最初的MapReduce通过简单的方式执行任务,但是本身结构严格:处理或者转化(map);同步(shuffle);以及在集群中将所有结点的结果整合到一起(reduce)。你必须将问题变成一系列MapReduce任务,然后按照顺序执行这些任务,延迟很高。在前一个任务执行完成之前,任何一个任务都无法开始,运行复杂、多阶段的应用程序很让人头疼。

一种替代方案是让开发者构建有关任务的复杂、多步有向非循环图(DAG),一次执行所有这些图,而不需要一个一个按照顺序来。这个方案避免了MapReduce中麻烦的同步问题,也使得应用程序的构建更加简单。对于DAG引擎的研究,微软在早些时候已经开始了,比如:Dryad,Dryad一直在微软内部使用,针对Bing搜索和其他托管服务。

在Spark中既包含了上述一些思想,也有一些重要的创新,比如:Spark支持跨DAG的内存数据分享,使不同任务可以以非常高的速度处理相同数据。Spark甚至支持循环数据流,这使得它能很好地处理迭代图算法(社交网络分析中常用)、机器学习和流处理,这是通过MapReduce或者其他DAG引擎是很难做到的。

Spark包含了流处理、快速故障还原、语言集成API、优化调度和传输数据等许多高级的功能。内存使用是Spark最引人注目的地方,MapReduce需要经常处理存储在磁盘上的数据,相比之下,Spark可以利用分散在集群中所有节点的大量RAM,它能够智能利用磁盘,解决溢出数据和持久性问题,这使Spark在应对负载时有了巨大的性能优势。

为什么不改进MapReduce,而要取代它?

在过去两年,Hadoop社区对MapReduce做了很多改进,但这些改进大多只是停留在了代码层,软件开发者把这称为原有代码基础上的“技术债务”,这些负债导致在原有基础上的改进只能解决一时的问题,从这个意义上讲,MapReduce实在是已经负债累累。

创建全新的代码库(无技术负债),针对当前和未来可预见的负载进行设计,这个过程相对还比较简单、风险较小。需要考虑的问题是:我们是不是真的有必要创建一个全新的项目?

作为MapReduce的替代品,Spark已经比较发展得比较成熟,拥有来自25个国家超过一百个贡献者,社区非常活跃,实际上已经没有必要去创建一个全新项目。

从长远来看,我们期望减少在MapReduce上的投入,相应增加在新框架上的投入,比如:Impala和Spark,理所当然,运行在该平台上的负载将逐渐转移到新的框架上。Google已经开始将负载从MapReduce转移到Pregel和Dremel上,而FaceBook则将负载转移到Presto上。

原文发布于微信公众号 - 云计算D1net(D1Net02)

原文发表时间:2014-05-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

【学习】大数据和Hadoop生态圈,Hadoop发行版和企业级应用

本文转自张子良的博客Hadoop develop,张子良,金融大数据专家,提供大数据方案咨询,技术咨询和企业内训。 第一章 大数据和Hadoop生态圈 本章主要...

41450
来自专栏包子铺里聊IT

5分钟深入 Hadoop 容错

通过之前几篇文章,我们对 Hadoop 的工作原理有了基本的了解,并且通过学习优化 Hadoop 性能,更深入的体会 Hadoop 处理数据的机制。今天我们聊聊...

296100
来自专栏大数据技术学习

常用的大数据技术有哪些?hadoop学习总结

大数据技术为决策提供依据,在政府、企业、科研项目等决策中扮演着重要的角色,在社会治理和企业管理中起到了不容忽视的作用,很多国家,如中国、美国以及欧盟等都已将大数...

30920
来自专栏开源优测

大数据测试学习笔记之hadoop家族

前言 在进行大数据测试之前,我们必须了解下大数据处理的的相关技术体系,今天主要学习和了解了hadoop家族,这里记录下来分享给大家。 hadoop家族产品 ha...

32560
来自专栏腾讯大数据的专栏

飞起来的大象-Hadoop从离线到在线

时代在变迁,市场在变化,周边的软硬件环境也突飞猛进般的发展,同时企业的业务需求也不断升级,从规模到成本都有较高的要求,这刺激Hadoop生态圈的变革。据AMR研...

31780
来自专栏祝威廉

Transformer架构解析

数据的变换依赖于数据的流转,只有流转的数据才能够被变换。基于这个理念,我们提出了Transformer架构。

9010
来自专栏CSDN技术头条

浅谈Apache Spark的6个发光点

【编者按】Spark是一个基于内存计算的开源集群计算系统,目的是更快速的进行数据分析。Spark由加州伯克利大学AMP实验室Matei为主的小团队使用Scala...

20290
来自专栏祝威廉

让Spark成为你的瑞士军刀

依托于Spark Streaming /Spark SQL,封装了一套通过配置和SQL就能完成批处理和流式处理的引擎,这样可以很好的完成复杂的ETL处理过程,实...

9620
来自专栏Albert陈凯

《Hadoop大数据技术体系:原理、内幕与项目实践》课程体系

《Hadoop大数据技术体系:原理、内幕与项目实践》课程体系 课程特色: 本课程以 “互联网日志分析系统”这一大数据应用案例为主线,依次介绍相关的大数据技...

44150
来自专栏Spark学习技巧

干货 | 如何成为大数据Spark高手

Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库、流处理和...

36680

扫码关注云+社区

领取腾讯云代金券