大数据Spark与Storm技术选型
先做一个对比:
对比点 |
storm |
spark streaming |
实时计算模型 |
纯实时,来一条数据,处理一条数据 |
准实时,对一个时间段内的数据收集起来,作为一个rdd,再处理 |
实时计算延迟度 |
毫秒级 |
秒级 |
吞吐量 |
低 |
高 |
事务机制 |
支持完善 |
支持,但不够完善 |
健壮性 / 容错性 |
zookeeper,acker,非常强 |
checkpoint,wal,一般 |
动态调整并行度 |
支持 |
不支持
|
再来说说spark streaming与storm的应用场景
先说一下storm:
1、建议在那种需要纯实时,不能忍受1秒以上延迟的场景下使用,比如实时金融系统,要求纯实时进行金融交易和分析
2、此外,如果对于实时计算的功能中,要求可靠的事务机制和可靠性机制,即数据的处理完全精准,一条也不能多,一条也不能少,也可以考虑使用storm
3、如果还需要针对高峰低峰时间段,动态调整实时计算程序的并行度,以最大限度利用集群资源(通常是在小型公司,集群资源紧张的情况),也可以考虑用storm
4、如果一个大数据应用系统,它就是纯粹的实时计算,不需要在中间执行sql交互式查询、复杂的transformation算子等,那么用storm是比较好的选择
spark 呢:
1、如果对上述适用于storm的三点,一条都不满足的实时场景,即,不要求纯实时,不要求强大可靠的事务机制,不要求动态调整并行度,那么可以考虑使用spark streaming
2、考虑使用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的优势和功能。
推荐阅读:
filebeat+kafka+strom+logstash+es 舆情采集系统
微信公众号:
上一篇: CSS position元素定位属性
下一篇: python文件夹操作实现基础的注册登录