Spark------Spark Streaming

【写在前面】:

  • 吞吐量:吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。
  • 实时性:实时性可以定义为:在规定时间内系统的反应能力.一般,有实时要求的应用有两个突出的特点:其中的活动时间性强,要求在一定的时刻和或一定的时间内自外部环境收集信息、再及时作出响应。
  • 容错性:是指软件检测应用程序所运行的软件或硬件中发生的错误并从错误中恢复的能力,通常可以从系统的可靠性、可用性、可测性等几个方面来衡量。

一、Spark Streaming概述

Spark Streaming是Spark上的一个流式处理框架,可以面向海量数据实现高吞吐量、高容错的实时计算。Spark Streaming支持多种类型数据源,包括Kafka、Flume、trwitter、zeroMQ、Kinesis以及TCP sockets等。Spark Streaming实时接收数据流,并按照一定的时间间隔将连续的数据流拆分成一批批离散的数据集;然后应用诸如map、reducluce、join和window等丰富的API进行复杂的数据处理;最后提交给Spark引擎进行运算,得到批量结果数据,因此其也被称为准实时处理系统。

Spark Streaming处理的数据流图:
这里写图片描述
Spark Streaming的集成性非常的好,通过RDD不仅能够与Spark上的所有组件无缝衔接共享数据,还能非常容易地与Kafaka、Flume等分布式日志收集框架进行集成。

二、Spark Streaming基础概念

2.1 批处理时间间隔

在Spark Streaming中,对数据的采集是实时、逐条进行的,但是对数据的处理却是分批进行的。
因此,Spark Streaming需要设定一个时间间隔,将该时间间隔内采集到的数据统一进行处理,这个间隔称为批处理时间间隔。

对于源源不断的数据,Spark Streaming是通过切分的方式,先将连续的数据流进行离散化处理。数据流每被切分一次,对应生成一个RDD,每个RDD都包含一个时间间隔内所获取到的所有数据,因此数据流被转换为由若干个RDD构成的有序集合,而批处理时间间隔决定了Spark Streaming需要多久对数据流切分一次。Spark Streaming是Spark上的组件,其获取的数据和数据上的操作最终仍以Spark作业的形式在底层的Spark内核中进行计算,因此批处理时间间隔不仅影响数据处理的吞吐量,同时也决定了Spark Streaming向Spark提交作业的频率和数据处理的延迟。需要注意的是,批处理时间间隔的设置将会伴随Spark Streaming应用程序的整个生命周期,无法在程序运行期间进行动态修改,所以需要综合考虑实际应用场景中的数据流特点和集群的处理性能等多种因素进行设定。

2.2 DStream基本概念

DStream是Spark Streaming的一个基本抽象,它以离散化的RDD序列的形式近似描述了连续的数据流。DStream本质上是一个以时间为键,RDD为值得哈希表,保存了时间顺序产生的RDD,而每个RDD封装了批处理时间间隔内获取到的数据。Spark Streaming每次将新产生的RDD添加到哈希表中,而对于已经不需要的RDD则会从这个哈希表中删除,所以DStream也可以简单地理解为一时间为 键的RDD的动态序列。
这里写图片描述

参考连接

【琉璃块】:https://www.cnblogs.com/liuliliuli2017/p/6809094.html
【sunyang098的博客】:https://blog.csdn.net/a822631129/article/details/68926742

猜你喜欢

转载自blog.csdn.net/yuming226/article/details/80475248