Spark vs Hadoop vs Storm
Posted 海牛大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark vs Hadoop vs Storm相关的知识,希望对你有一定的参考价值。
Apache Hadoop
Hadoop是一个开源的分布式处理框架。Hadoop用于存储大型数据集并在各种集群上运行分布式分析过程。当许多组织受到预算和时间限制时,Hadoop是许多组织选择的快速存储大型数据集的选择。
Hadoop之所以高效,是因为它不需要大数据应用程序来通过网络发送大量数据,并且具有强大的性能,因为即使集群或单个服务器出现故障,大数据应用程序也可以继续运行。Hadoop MapReduce仅限于一次处理一个作业的批处理。这就是为什么现在Hadoop被广泛用作数据仓库工具而不是数据分析工具的原因。
Apache Spark
Spark是数据并行开源处理框架。Spark工作流是在Hadoop MapReduce中设计的,但相对而言比Hadoop MapReduce效率更高。Apache Spark的最佳功能是它不使用Hadoop YARN来运行,而是拥有自己的流API和独立的进程,可在不同的短时间间隔内进行连续批处理。在某些情况下,Spark的运行速度比Hadoop快100倍,但是没有自己的分布式存储系统。这就是为什么大多数大数据项目在Hadoop上安装Apache Spark,以便可以通过使用Hadoop分布式文件系统中存储的数据在Spark上运行高级大数据应用程序的原因。
Apache Storm
Storm是一个任务并行,开源的分布式计算系统。Storm在拓扑(即有向非循环图)中具有独立的工作流程。Storm中的拓扑会一直执行,直到出现某种干扰或系统完全关闭为止。Storm不能在Hadoop集群上运行,而是使用Zookeeper及其自己的奴才辅助工具来管理其进程。Storm可以读写文件到HDFS。
目的不是要就哪一个优于另一个做出决定,而是要了解Hadoop,Spark和Storm这三个要素的区别和相似之处。Apache Hadoop在大数据市场上炙手可热,但其近亲Spark和Storm更为火爆。
Spark vs.Hadoop vs.Storm
了解相似之处:
1)Hadoop,Spark和Storm都是开源处理框架。
2)Hadoop,Spark和Storm都可用于实时BI和大数据分析。
3)Hadoop,Spark和Storm都提供容错能力和可伸缩性。
4)Hadoop,Spark和Storm都是大数据应用程序开发人员首选的框架选择(基于需求),因为它们的实现方法简单。
5)Hadoop,Spark和Storm都是在基于JVM的编程语言(分别为Java,Scala和Clojure)中实现的。
了解差异:
1) 数据处理模型
Hadoop MapReduce最适合批处理。对于需要实时选项的大数据应用程序,组织必须使用其他开源平台,例如Impala或Storm。Apache Spark的设计用途不只是简单的数据处理,因为它可以利用现有的机器学习库和流程图。由于Apache Spark的高性能,它可以用于批处理和实时处理。Spark提供了一个将所有平台都使用单一平台的机会,而不是将任务分散在不同的开源平台上,从而避免了学习和维护不同平台的开销。
微分批处理是一种特殊的批处理,其中批大小较小。通过微分批处理,窗口化变得容易了,因为它提供了状态数据的计算。Storm是一个完整的流处理引擎,支持微批处理,而Spark是一个批处理引擎,它具有微批处理功能,但是从最严格的意义上讲,它不提供对流的支持。
2) 表现
Spark处理内存中的数据,而Hadoop MapReduce在执行映射操作或减少操作后仍会保留回到磁盘,因此与Spark在这方面相比,Hadoop MapReduce落后了。像任何其他数据库一样,Spark需要大量内存-因为它将进程加载到内存中并存储以进行缓存。但是,如果Spark在YARN之上运行 各种其他需要资源的服务,则Spark可能会丧失性能。就Hadoop MapReduce而言,该工作一旦完成便被终止,这使得它可以与其他对资源的需求服务一起运行,而性能却略有不同。
同样,比较Spark和Storm可以提供容错能力和可伸缩性,但是处理模型不同。Spark分批处理事件,这些事件在处理事件之前会在很短的时间内出现,而Storm一次处理一次。因此,Spark具有几秒钟的延迟,而Storm仅以毫秒的延迟处理事件。
当整个数据都可以容纳在内存中时,Spark在专用群集上具有良好的性能,而当数据不能容纳在内存中时,Hadoop可以在其他服务上表现良好。当应用程序需要不到一秒的延迟而又不会丢失数据时,Storm是一个不错的选择,而Spark可以用于状态计算中,以确保事件仅被处理一次。
3) 易于发展
Hadoop开发:
Hadoop MapReduce用Java编写。尽管需要花一些时间来理解和学习Apache Pig的语法,但Apache Pig使在Hadoop中的开发变得更加容易。为了将SQL兼容性添加到Hadoop,开发人员可以在Hadoop之上使用Hive。实际上,有几种数据集成服务和工具可让开发人员无需任何编程即可运行MapReduce作业。Hadoop MapReduce缺少交互模式,但是Impala之类的工具提供了完整的Hadoop查询包。
Spark开发:
Spark使用Scala元组,并且只能通过嵌套通用类型来增强它们,因为Scala元组很难用Java实现。但是,这不需要牺牲编译时类型的安全检查。
Storm开发:
Storm使用处理模型所固有的DAG。有向无环图中的每个节点都以某种方式转换数据并继续该过程。有向无环图中各节点之间的数据传输具有自然接口,这是通过Storm元组进行的。但是,这可以通过牺牲编译时间类型的安全检查为代价来实现。
Spark具有交互模式,因此Spark易于编程,而Hadoop无法直接实现。但是,出现了许多工具来简化Hadoop编程。另外,如果该项目需要通过API调用进行数据浏览的交互模式,那么Storm不支持该模式。必须使用Spark。
Hadoop,Spark和Storm具有其自身的优势,但是在某些方面,例如开发成本,性能和数据处理模型,消息传递保证,延迟,容错和可伸缩性,在决定哪一个更适合于某个应用程序方面起着至关重要的作用。特定的大数据应用程序。
对于大数据分析堆栈而言,Hadoop,Spark或Storm都是不错的选择,而选择理想的解决方案仅是考虑上述异同的问题。开源工具的优点在于-基于应用程序需求,工作负载和基础架构,理想的选择是将Spark和Storm与其他开源工具(如Apache Hadoop,Apache Kafka,Apache Flume等)结合在一起。
无论组织选择哪种开源工具(无论是Hadoop,Spark,Storm还是这三种工具的组合),都已经改变了实时商业智能,因为所有中型到大型组织都在拥抱自己的优势。
以上是关于Spark vs Hadoop vs Storm的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop MapReduce vs MPI(vs Spark vs Mahout vs Mesos) - 何时使用一个而不是另一个?
快速 Hadoop 分析(Cloudera Impala vs Spark/Shark vs Apache Drill)