Storm
1) 真正意义上的实时处理。(实时性)
2)想实现一些复杂的功能,比较麻烦,比如:实现滑动窗口 (易用性)
原生的API:spout bolt bolt
Trident框架:使用起来难度还是有一些。
3)没有一个完整的生态
SparkStreaming
1)有批处理的感觉,一次处理的数据量较小,然后基于内存很快就可以运行完成。相当于是准实时。 (实时性)
2)封装了很多高级的API,在用户去实现一个复杂的功能的时候,很容易就可以实现。 (易用性)
3)有完整的生态系统。同时可以配置SparkCore,SparkSQL,Mlib,GraphX等,他们之间可以实现无缝的切换。
做一个比喻来说明这两个的区别:
Storm就像是超市里面的电动扶梯,实时的都在运行;
SparkStreaming就像是超市里面的电梯,每次载一批人;