Spark一出,Hadoop必死?Spark才是大数据的未来?

最近公司邀请来王家林老师来做培训,其浮夸的授课方式略接受不了。其强烈推崇Spark技术,宣称Spark是大数据的未来,同时宣布了Hadoop的死刑。

那么与Hadoop相比,Spark技术如何?现工业界大数据技术都在使用何种技术?

来自Xiaoyu Ma,号称是大数据工程师的回答:

我本人是类似Hive平台的系统工程师,我对MapReduce的熟悉程度是一般,它是我的底层框架。我隔壁组在实验Spark,想将一部分计算迁移到Spark上。

年初的时候,看Spark的评价,几乎一致表示,Spark是小数据集上处理复杂迭代的交互系统,并不擅长大数据集,也没有稳定性。但是最近的风评已经变化,尤其是14年10月他们完成了Peta sort的实验,这标志着Spark越来越接近替代Hadoop MapReduce了。

Spark the fastest open source engine for sorting a petabyte

Sort和Shuffle是MapReduce上最核心的操作之一,比如上千个Mapper之后,按照Key将数据集分发到对应的Reducer上,要走一个复杂的过程,要平衡各种因素。Spark能处理Peta sort的话,本质上已经没有什么能阻止它处理Peta级别的数据了。这差不多远超大多数公司单次Job所需要处理的数据上限了。

回到本题,来说说Hadoop和Spark。Hadoop包括Yarn和HDFS以及MapReduce,说Spark代替Hadoop应该说是代替MapReduce。

MapReduce的缺陷很多,最大的缺陷之一是Map + Reduce的模型。这个模型并不适合描述复杂的数据处理过程。很多公司(包括我们)把各种奇怪的Machine Learning计算用MR模型描述,不断挖(lan)掘(yong)MR潜力,对系统工程师和Ops也是极大挑战了。很多计算,本质上并不是一个Map,Shuffle再Reduce的结构,比如我编译一个SubQuery的SQL,每个Query都做一次Group By,我可能需要Map,Reduce+Reduce,中间不希望有无用的Map;又或者我需要Join,这对MapReduce来说简直是噩梦,什么给左右表加标签,小表用Distributed Cache分发,各种不同Join的Hack,都是因为MapReduce本身是不直接支持Join的,其实我需要的是,两组不同的计算节点扫描了数据之后按照Key分发数据到下一个阶段再计算,就这么简单的规则而已;再或者我要表示一组复杂的数据Pipeline,数据在一个无数节点组成的图上流动,而因为MapReduce的呆板模型,我必须一次一次在一个Map/Reduce步骤完成之后不必要地把数据写到磁盘上再读出,才能继续下一个节点,因为Map Reduce2个阶段完成之后,就算是一个独立计算步骤完成,必定会写到磁盘上等待下一个Map Reduce计算。

上面这些问题,算是每个号称下一代平台都尝试解决的。

现在号称次世代平台现在做的相对有前景的是Hortonworks的Tez和Databricks的Spark。他们都尝试解决了上面说的那些问题。Tez和Spark都可以很自由地描述一个Job里执行流(所谓DAG,有向无环图)。他们相对现在的MapReduce模型来说,极大的提升了对各种复杂处理的直接支持,不需要再绞尽脑汁“挖掘”MR模型的潜力。

有兴趣的童鞋可以看看这个PPT

http://www.slideshare.net/Hadoop_Summit/w-235phall1pandey

这是Hadoop峰会上Tez的材料,第九页开始有描述Hive on Tez和传统MR Hive的区别,这些区别应该也适用于MR Hive和Spark SQL,也很清楚的体现了为何MR模型很笨重。

相比Tez,Spark加入了更多内存Cache操作,但据了解它也是可以不Cache直接处理的,只是效率就会下降。

再说Programming Interface,Tez的Interface更像MapReduce,但是允许你定义各种Edge来连接不同逻辑节点。Spark则利用了Functional Programming的理念,API十分简洁,相比MR和Tez简单到令人发指。我不清楚Spark如果要表现复杂的DAG会不会也变得很麻烦,但是至少wordcount的例子看起来是这样的,大家可以比较感受下:

incubator-tez/WordCount.java at master · apache/incubator-tez · GitHub

Examples | Apache Spark

处理大规模数据而言,他们都需要更多proven cases。至少Hadoop MapReduce是被证明可行的。

作为Data Pipeline引擎来说,MapReduce每个步骤都会存盘,而Spark和Tez可以直接网络发送到下一个步骤,速度上是相差很多的,但是存盘的好处是允许继续在失败的数据上继续跑,所以直观上说MapReduce作为pipeline引擎更稳健。但理论上来说,如果选择在每个完成的小步骤上加CheckPoint,那Tez和Spark完全能和现在的MapReduce达到一样的稳健。

总结来说,即便现在不成熟,但是并没有什么阻碍他们代替现有的MapReduce Batch Process。

对Tez而言,似乎商业上宣传不如Spark成功。Databricks头顶Berkley的光环,商业宣传又十分老道,阵营增长极快。光就系统设计理念,没有太大的优劣,但是商业上可能会拉开差距。Cloudera也加入了Spark阵营,以及很多其他大小公司,可以预见的是,Spark会成熟的很快,相比Tez。

但Tez对于Hortonworks来说是赢取白富美的关键,相信为了幸福他们也必须努力打磨推广tez。

所以就算现在各家试用会有种种问题,但是毕竟现在也就出现了2个看起来有戏的“次世代”平台,那慢慢试用,不断观望,逐步替换,会是大多数公司的策略。

————————————————————————————————

来自 纪路,大数据工程师/自由软件拥护者/Pythoner/…的回答:

我根据我有限的知识对Hadoop和Spark做一下对比,在附加一点自己的评论就好了。

原生语言:hadoop-JAVA,Spark-scala

评注:虽然可以实现接口,但原生的语言就是好用,如果某人痛恨java,Spark给你一条生路。

计算模型:hadoop-MapReduce,Spark-DAG(有向无环图)

评注:经常有人说Spark就是内存版的MapReduce,实际上不是的。Spark使用的DAG计算模型可以有效的减少Map和Reduce人物之间传递的数据,尤其适合反复迭代的机器学习场景。而Hadoop则更擅长批处理。不过Tez也是使用的DAG计算模型,他也是Hadoop,明眼人都知道DAG计算模型比MR更好。

存储:hadoop-HDFS,Spark-RDD,HDFS

评注:spark既可以仅用内存存储,也可以在HDFS上存储,即使Spark在HDFS上存储,DAG计算模型在迭代计算上还是比MR的更有效率。

我并不觉得这两个及系统又大多的矛盾,只不过Spark一直宣称比hadoop快而已。实际上从应用场景上区分,Hadoop更适合做批处理,而Spark更适合做需要反复迭代的机器学习。

查看知乎原帖:https://www.zhihu.com/question/26568496

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2014-12-17

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏加米谷大数据

Spark适用场景以及与Hadoop MapReduce优势对比

39130
来自专栏鸿的学习笔记

Shark,Spark SQL,Spark上的Hive以及Apache Spark上的SQL的未来

随着Spark SQL和Apache Spark effort(HIVE-7292)上新Hive的引入,我们被问到了很多关于我们在这两个项目中的地位以及它们与S...

13320
来自专栏about云

spark与hadoop相比,存在哪些缺陷(劣势)

一说大数据,人们往往想到Hadoop。这固然不错,但随着大数据技术的深入应用,多种类型的数据应用不断被要求提出,一些Hadoop被关注的范畴开始被人们注意,相关...

41960
来自专栏灯塔大数据

大数据赛道上的单挑:MapReduce与Spark到底谁快?

? 通常人们认为Spark的性能和速度全面优于MapReduce,但最新的对决显示MapReduce在某些方面也有胜场,而且数据规模越大优势越大。 Apach...

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

【学习】如何从菜鸟成长为Spark大数据高手?

Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理、图技术、机器学习、NoSQL查询等方面的所有核心问题,具有完善的生态系统,这直接奠定了其一统云计算...

368100
来自专栏CSDN技术头条

Apache Spark新方向:深度学习和流式数据处理支持

6月5~7日,Spark Summit 2017 在美国旧金山举行。来自 Databricks 的 Matei Zaharia、Michael Armbrust...

23760
来自专栏CSDN技术头条

Cloudera旨在以Spark取代MapReduce作为默认Hadoop框架

Apache Spark内存计算框架更接近于Apache Hadoop,Cloudera今天宣布它正努力地使Spark取代默认的Hadoop数据处理框架。 “虽...

22290
来自专栏CDA数据分析师

大数据分析师为什么需要学习Spark?

作者 CDA 数据分析师 Spark这套速度极快的内存分析引擎与以往的大数据处理框架相比具有诸多优势,从而能够轻松地为大数据应用企业带来理想的投资回报。Sp...

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

【了解】Spark和Hadoop是友,非敌

Spark 在 6 月份取得了激动人心的成绩。在圣何塞举办的 Hadoop 峰会上,Spark 成了人们经常提及的话题和许多演讲的主题。IBM 还在 6 月 1...

348100
来自专栏大数据

Spark是否可以完全取代Hadoop

谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生。然而,最近业界有一些人正在大张旗鼓的宣扬Hadoop将死,Spark将立。他们究...

446100

扫码关注云+社区

领取腾讯云代金券