Spark已经取代Hadoop 成为了时下最活跃的开源大数据项目。虽然它与Hadoop两者之间并不是直接的竞争关系但必须承认他们有很多相近的用途。
本文中我们就来比较一下Spark和Hadoop之间的相似和区别。我将采用比较平实的文风来避免艰深的计算机科学专业词汇,希望企业的决策层也能够从中获益。
首先Hadoop和Spark两者都是大数据框架,为大数据相关的一些任务提供了时下最流行的工具。Hadoop曾经在开源大数据框架领袖的位子上坐了很多年,但最近被Spark抢去了风头。
这两种框架功能既不完全相同又不互斥,所以其实可以一起使用。虽然有人说Spark有时候比Hadoop快一百倍,但不可否认的是Spark并没有自己的分布式存储系统。
分布式存储是大数据项目的基础,我们借助分布式存储可以将PB级别的数据集存储到理论上无穷多个计算机和硬盘上,而不用购买昂贵的大型专业存储器。分布式存储系统也是可扩展的,这意味着可以随时添加硬盘以满足增加的数据量。
如前所述Spark本身不提供分布式存储系统所以很多大数据项目都将Spark的分析应用和Hadoop的分布式文件系统HDFS结合起来使用。
Spark相比于Hadoop
的优势在于速度。Spark的操作都是在内存中进行的,因此避免了Hadoop映射归纳系统MapReduce中费时的读写硬盘操作。
每次操作完成之后MapReduce都将所有数据写回到物理存储介质中。这一设置的最初目的是在出错时进行数据恢复因为数据存储在硬盘中比在内存中更保险。Spark则采用了一种称为弹性分布式数据集的技术来从错误中进行恢复。
Spark进行复杂数据处理如实时流数据处理和机器学习的能力比Hadoop强得多,再加上处理速度的巨幅提升才是Spark流行的真正原因。实时处理意味着数据在被捕获时就可以被加入到分析系统中并将分析得到的结果进行实时的反馈。实时的分析和反馈已经成为了大数据应用的一种发展趋势。