说到大数据,很多人都会提及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。
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。