Spark Streaming 学习笔记

来源:互联网 发布:linux常用命令 cat 编辑:程序博客网 时间:2024/05/17 21:20

Spark Streaming 用来干什么:

许多应用需要即时处理收到的数据,例如用来实时追踪页面访问统计的应用、训练机器学习模型的应用,还有自动检测异常的应用。Spark Streaming 是Spark 为这些应用而设计的模型。它允许用户使用一套和批处理非常接近的API 来编写流式计算应用,这样就可以大量重用批处理应用的技术甚至代码。

Spark StreamingSpark核心API的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理。支持从多种数据源获取数据,包括KafkFlumeTwitterZeroMQKinesis以及TCP sockets,从数据源获取数据之后,可以使用诸如mapreducejoinwindow等高级函数进行复杂算法的处理。最后还可以将处理结果存储到文件系统,数据库和现场仪表盘。在“One Stack rule them all”的基础上,还可以使用Spark的其他子框架,如集群学习、图计算等,对流数据进行处理。


术语:

离散流(discretized stream)或DStream:这是Spark Streaming对内部持续的实时数据流的抽象描述,即我们处理的一个实时数据流,在Spark Streaming中对应于一个DStream 实例。

l批数据(batch data):这是化整为零的第一步,将实时流数据以时间片为单位进行分批,将流处理转化为时间片数据的批处理。随着持续时间的推移,这些处理结果就形成了对应的结果数据流了。

l时间片或批处理时间间隔( batch interval):这是人为地对流数据进行定量的标准,以时间片作为我们拆分流数据的依据。一个时间片的数据对应一个RDD实例。

l窗口长度(window length):一个窗口覆盖的流数据的时间长度。必须是批处理时间间隔的倍数,

l滑动时间间隔:前一个窗口到后一个窗口所经过的时间长度。必须是批处理时间间隔的倍数

lInput DStream :一个input DStream是一个特殊的DStream,将Spark Streaming连接到一个外部数据源来读取数据。





Spark Streaming 为每个输入源启动对应的接收器。接收器以任务的形式运行在应用的执行器进程中,从输入源收集数据并保
存为RDD。它们收集到输入数据后会把数据复制到另一个执行器进程来保障容错性(默认行为)。数据保存在执行器进程的内存中,和缓存RDD 的方式一样1。驱动器程序中的StreamingContext 会周期性地运行Spark 作业来处理这些数据,把数据与之前时间区间中的RDD 进行整合。




检查点机制:

检查点机制是我们在Spark Streaming 中用来保障容错性的主要机制。它可以使Spark Streaming 阶段性地把应用数据存储到诸如HDFS 或Amazon S3 这样的可靠存储系统中,以供恢复时使用。具体来说,检查点机制主要为以下两个目的服务。
• 控制发生失败时需要重算的状态数。我们在10.2 节中讨论过,Spark Streaming 可以通过转化图的谱系图来重算状态,检查点机制则可以控制需要在转化图中回溯多远。
• 提供驱动器程序容错。如果流计算应用中的驱动器程序崩溃了,你可以重启驱动器程序并让驱动器程序从检查点恢复,这样Spark Streaming 就可以读取之前运行的程序处理
数据的进度,并从那里继续。


原创粉丝点击