对比点框架 |
Storm大数据 |
Spark Streamingspa |
实时计算模型orm |
纯实时,来一条数据,处理一条数据事务 |
准实时,对一个时间段内的数据收集起来,做为一个RDD,再处理ci |
实时计算延迟度资源 |
毫秒级开发 |
秒级io |
吞吐量table |
低 |
高 |
事务机制 |
支持完善 |
支持,但不够完善 |
健壮性 / 容错性 |
ZooKeeper,Acker,很是强 |
Checkpoint,WAL,通常 |
动态调整并行度 |
支持 |
不支持 |
Spark Streaming与Storm的应用场景
对于Storm来讲:
一、建议在那种须要纯实时,不能忍受1秒以上延迟的场景下使用,好比实时金融系统,要求纯实时进行金融交易和分析
二、此外,若是对于实时计算的功能中,要求可靠的事务机制和可靠性机制,即数据的处理彻底精准,一条也不能多,一条也不能少,也能够考虑使用Storm
三、若是还须要针对高峰低峰时间段,动态调整实时计算程序的并行度,以最大限度利用集群资源(一般是在小型公司,集群资源紧张的状况),也能够考虑用Storm
四、若是一个大数据应用系统,它就是纯粹的实时计算,不须要在中间执行SQL交互式查询、复杂的transformation算子等,那么用Storm是比较好的选择
对于Spark Streaming来讲:
一、若是对上述适用于Storm的三点,一条都不知足的实时场景,即,不要求纯实时,不要求强大可靠的事务机制,不要求动态调整并行度,那么能够考虑使用Spark Streaming
二、考虑使用Spark Streaming最主要的一个因素,应该是针对整个项目进行宏观的考虑,即,若是一个项目除了实时计算以外,还包括了离线批处理、交互式查询等业务功能,并且实时计算中,可能还会牵扯到高延迟批处理、交互式查询等功能,那么就应该首选Spark生态,用Spark Core开发离线批处理,用Spark SQL开发交互式查询,用Spark Streaming开发实时计算,三者能够无缝整合,给系统提供很是高的可扩展性
Spark Streaming与Storm的优劣分析
事实上,Spark Streaming绝对谈不上比Storm优秀。这两个框架在实时计算领域中,都很优秀,只是擅长的细分场景并不相同。
Spark Streaming仅仅在吞吐量上比Storm要优秀,而吞吐量这一点,也是从来挺Spark Streaming,贬Storm的人着重强调的。可是问题是,是否是在全部的实时计算场景下,都那么注重吞吐量?不尽然。所以,经过吞吐量说Spark Streaming强于Storm,不靠谱。
事实上,Storm在实时延迟度上,比Spark Streaming就好多了,前者是纯实时,后者是准实时。并且,Storm的事务机制、健壮性 / 容错性、动态调整并行度等特性,都要比Spark Streaming更加优秀。
Spark Streaming,有一点是Storm绝对比不上的,就是:它位于Spark生态技术栈中,所以Spark Streaming能够和Spark Core、Spark SQL无缝整合,也就意味着,咱们能够对实时处理出来的中间数据,当即在程序中无缝进行延迟批处理、交互式查询等操做。这个特色大大加强了Spark Streaming的优点和功能。