在Spark框架中,要说流式计算,主要由Spark Streaming组件负责。 在大数据的发展中,流计算越来越受到重视,Spark Streaming流计算也根据实际需求不断进行调整。 在今天的大数据学习共享中,我们主要谈论的是Spark实时流计算。
Spark流计算简介
Spark的Spark Streaming是早期流计算盒的代表,也有Storm,以流计算为对象,但随着技术的发展,Storm逐渐被抛弃。 这几年,Flink在流媒体计算领域受到了新的欢迎。
Spark Streaming依靠Spark生态,在流媒体计算领域拥有很好的市场占有率。 Spark Streaming也在发展,自身的不足也在改善。
从Spark 2.3开始,“结构流”引入了低延迟的持续流处理模型,使其成为类似于Flink机制的持续处理引擎,以实现端到端的最低1毫秒延迟,而不是批处理引擎。
Spark Streaming
Spark Streaming本质上是基于批处理的流媒体计算框架,支持Kafka、Flume、简单的TCP套接字等多个数据输入源,输入流接收机
Spark Streaming在处理数据流之前,会以时间间隔对数据流进行分段。 Spark对连续数据流的抽象被称为离散数据流(dstream )。 也可以将DStream组织为DStreamGraph。 Dstream本质上由一系列连续的RDD构成。
DStream是小批量的RDD (灵活的分布式数据集),RDD是分布式数据集,任意函数和幻灯片数据窗口) )进行转换,可以实现并行操作。
从
Structured Streaming
Spark 2.0开始,引入了结构流,将微信处理与高级API分离。 简化了API的使用,API不再负责微批量处理; 开发人员可以将流视为无边界表,并根据这些“表”执行查询。结构流的默认引擎基于微批处理引擎,最少可以达到100ms的延迟和数据处理的一次性能保证。 采用什么样的处理模式只要进行简单的模式配置即可。
结构流定义了非边界表的概念。 换言之,每个流的数据源被视为逻辑上不断增加的动态表(非边界表),而从数据源持续流入的每个数据项被视为新行的数据添加到动态表中。 用户可以通过静态结构化数据的批处理查询方法(SQL查询)实时查询数据。
Spark Streaming VS Structured Streaming
总结来说,这两种模式,从基础原理上来说完全不同。Spark Streaming采用了微批量的处理方法。 每批的间隔是一个批,也就是一个RDD,我们可以通过操作RDD来陆续接收和处理数据。
结构流将实时数据视为连续添加的表,流中的所有数据都类似于向表中添加新行。
Spark 3.0之后,新的Structured Streaming UI诞生,发现Spark生态有向流处理进步的目标和空间。
关于大数据学习,Spark生态实时流媒体计算,以上简单介绍。 流媒体计算已成为大数据技术的普及趋势,基于Spark生态的流媒体计算提供了重要的技术支持。