大数据技术的逐渐成熟,技术人才的不断培养,面对各大企业抛来的橄榄枝,你做好准备迎接属于你辉煌的未来了吗?千锋杭州大数据工程师培训的讲师急你所急,寻你所需,不仅为你准备了一场大数据技术盛宴,还准备了通往企业的大数据开发面试题,并且都是精细讲解,今天分享的技术点是:storm和SparkStreaming的比较。
Storm风暴和SparkStreaming火花流都是分布式流处理的开源框架。这里将它们进行比较并指出它们的重要的区别。
处理模型,延迟
虽然这两个框架都提供可扩展性和容错性,它们根本的区别在于他们的处理模型。而Storm处理的是每次传入的一个事件,而SparkStreaming是处理某个时间段窗口内的事件流。因此,Storm处理一个事件可以达到秒内的延迟,而SparkStreaming则有几秒钟的延迟。
容错、数据
在容错数据方面的权衡是,SparkStreaming提供了好的支持容错状态计算。在Storm中,每个单独的记录经过系统时必须被跟踪,所以Storm能够至少能让每个记录将被处理一次,但是在从错误中恢复过来时候允许出现重复记录。这意味着可变状态可能不正确地被新两次。
另一方面,SparkStreaming只需要在批级别进行跟踪处理,因此可以有效地每个mini-batch将完全被处理一次,即便一个节点发生故障。(实际上,Storm的Tridentlibrary库也提供了完全一次处理。但是,它依赖于事务新状态,这比较慢,通常必须由用户实现。)
简而言之,如果你需要秒内的延迟,Storm是一个不错的选择,而且没有数据丢失。如果你需要有状态的计算,而且要完全确保每个事件只被处理一次,SparkStreaming则好。SparkStreaming编程逻辑也可能容易,因为它类似于批处理程序(Hadoop),特别是在你使用批次(尽管是很小的)时。
实现,编程api
Storm初次是由Clojure实现,而SparkStreaming是使用Scala.如果你想看看代码还是让自己的定制时需要注意的地方,这样以便发现每个系统是如何工作的。Storm是由BackType和Twitter开发;SparkStreaming是在加州大学伯克利分校开发的。
Storm有一个JavaAPI,也支持其他语言,而SparkStreaming是以Scala编程,当然也支持Java。
SparkStreaming一个好的特性是其运行在Spark上.这样你能够你编写批处理的同样代码,这就不需要编写单独的代码来处理实时流数据和历史数据。
产品支持
Storm已经发布几年了,在Twitter从2011年运行至今,同时也有其他公司使用,而SparkStreaming是一个新的项目,它从2013年在Sharethrough有一个项目运行。
Hadoop支持
Storm是一个HortonworksHadoop数据平台上的流解决方案,而SparkStreaming有MapR的版本还有Cloudera的企业数据平台,Databricks也提供Spark支持。
集群管理集成
尽管两个系统都运行在它们自己的集群上,Storm也能运行在Mesos,而SparkStreaming能运行在YARN和Mesos上。
今天大数据的开发面试题精讲部分到这就结束了,大数据技术成为当今时代的核心技术,千锋讲师用自己丰富的阅历实力讲解大数据,感兴趣的可以跟我们的讲师多多交流。
相关文章
了解千锋动态
关注千锋教育服务号
扫码关注千锋互联
身边的移动开发导师