SparkStreaming介绍
概述
Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数
据的能力,以吞吐量高和容错能力强著称。
SparkStreaming VS Storm
大体上两者非常接近,而且都处于快速迭代过程中,即便一时的对比可能某一方占优势。
在Spark老版本中,SparkStreaming的延迟级别达到秒级,而Storm可以达到毫秒级别。而
在最新的2.0版本之后,SparkStreaming能够达到毫秒级。
但后者可能很快就追赶上来。比如在性能方面,Spark Streaming刚发布不久,有基准测试显
示性能超过Storm几十倍,原因是Spark Streaming采用了小批量模式,而Storm是一条消息
一条消息地计算。但后来Storm也推出了称为Trident的小批量计算模式,性能应该不是差距
了。而且双方都在持续更新,底层的一个通信框架的更新或者某个路径的代码优化都可能让性
能有较大的提升。
目前,sparkStreaming还不能达到一条一条记录的精细控制,还是以batch为单位。所以像
Storm一般用于金融领域,达到每笔交易的精细控制。
但是两者的基因不同,更具体地说就是核心数据抽象不同。这是无法改变的,而且也不会轻易
改变,这样的基因也决定了它们各自最适合的应用场景。
Spark Streaming的核心抽象是DSTream,里面是RDD,下层是Spark核心DAG调度,所以
Spark Streaming的这一基因决定了其粒度是小批量的,无法做更精细地控制。数据的可靠性
也是以批次为粒度的,但好处也很明显,就是有可能实现更大的吞吐量。
另外,得益于Spark平台的良好整合性,完成相同任务的流式计算程序与历史批量处理程序的
代码基本相同,而且还可以使用平台上的其他模块比如SQL、机器学习、图计算的计算能力