绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Spark vs Hadoop vs Storm
2020-05-09 16:35:57

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还是这三种工具的组合),都已经改变了实时商业智能,因为所有中型到大型组织都在拥抱自己的优势。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Apache Spark技术专区
创建时间:2020-05-08 17:16:40
Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎 。现在形成一个高速发展应用广泛的生态系统。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 栈栈
    专家
戳我,来吐槽~