Spark近些年应运而生,受到追捧,甚至被认为是大数据的未来,将会替代Hadoop。
说到大数据,很多人都会提及Hadoop 与 Apache Spark。Hadoop解决了大数据的可靠存储和处理问题。但因为其本身的工作流程一板一眼,只擅长静态存储对象的批式处理,有自身的局限和不足。Spark应运而生,受到追捧,甚至被认为是大数据的未来,将会替代Hadoop。
所以在这里简要总结下各自的优劣势,并从五个方面比较二者的区别。看看Spark是否能宣布Hadoop的“死刑”?
Hadoop和ApacheSpark虽然都是大数据框架,但他们并不真正服务于同样的目的。 Hadoop是一个分布式数据基础设施:可以支持一个或多个服务器,在集群内跨多个节点,分配大量数据集合。这意味着如果你要处理大数据,有了它就足以解决大数据的存储和处理问题,不需要购买昂贵的定制化硬件及维护服务了。 它还也可以索引和跟踪数据,使大数据处理和分析更有效。 另一方面,Spark是一个数据处理工具,可以做分布式数据收集,但不能做分布式存储。
Hadoop不仅是个存储组件,还包括Hadoop分布式文件系统和被称作MapReduce的处理组件。所以,人家自身功能很多,你不一定非要用Spark配合。 相反地,不搭建在Hadoop上,也可以单独使用Spark。但是,由于Spark不自带文件管理系统,还得结合HDFS或者基于云的数据平台。 其实,Spark是专为完善Hadoop而生,因此有人认为在未来会替代Hadoop。但是,大部分人目前通常是采用二者配合来做的方式搭建,更希望二者可以协作起来,更好地发挥各自的效用。
Spark通常比MapReduce快得多,因为处理数据的方式不一样。 在MapReduce按部就班的处理时,Spark可以对整个数据集中处理。 有数据科学家这样形容MapReduce的工作流程:从集群读取数据——执行一个操作——将结果写入集群——从集群中读取更新的数据——执行下一步操作——写未来结果到集群……” 另一方面,Spark是基于内存计算,在完成完整的数据分析操作上,也是接近实时处理的。它的工作流程可以这样形容:从集群中读取数据——执行所有必要的分析操作——将结果写入集群,完成。Spark比MapReduce在批处理上速度快得高达10倍,基于内存计算分析上快100倍。
如果数据操作和报告需求大多是静态的, MapReduce的处理风格完全可以胜任了,你只需耐心等待它的批处理模式来做就行。但是,如果你需要对流数据做分析,比如工厂里的传感器数据,或要处理多个操作的应用程序,这种情况选择Spark更合适。 例如,大多数机器学习算法需要多个操作。 Spark常见的应用场景还有:实时营销活动、在线产品推荐、网络安全分析和机器的日志监控等。
Hadoop对系统故障具备天然抵抗力,因为上文所说的,它的工作流程非常稳扎稳打:在执行每个操作后都会把数据写入磁盘,自然便于恢复。而Spark,采用类似的方式,具有内置弹性。 具体来说,其数据对象存储在集群数据里的,弹性分布式数据集上(即RDD,Spark的核心。它具备像MapReduce等数据流模型的容错特性,并且允许开发人员在大型集群上执行基于内存的计算)。这些数据对象可以存储在内存或磁盘上,当系统报错时候,RDD可以帮助全面恢复。
综上所说,可以看出,二者各有千秋,场景不同所选方案就会不同。不过,大多数人更愿意看到1+1>2的效果。
注:文章翻译自cio网站,作者Katherine Noyes。
本文仅代表作者观点,不代表本站立场。
本文来自网络,如有侵权及时联系本网站。