文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州
▲ 本章节目的
⚪ 了解网站流量项目的SparkStreaming概述;
⚪ 掌握网站流量项目的SparkStreaming实现 Wordcount 底层流程;
⚪ 掌握网站流量项目的SparkStreaming实现历史批次的累积处理;
⚪ 掌握网站流量项目的SparkStreaming滑动窗口机制;
⚪ 掌握网站流量项目的SparkStreaming入门练习;
一、 SparkStreaming概述
1. SparkStreaming概述
Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力,以吞吐量高和容错能力强著称。
目前做实时流计算的框架:
1. Storm。
2. SparkStreaming。
3. Flink。
上图可以理解为 SparkStreaming 可以接收多种数据源数据,比如主流的 Kafka,然后经过 SparkStreaming 处理,将结果存到其他的应用系统中,比如 MySQL,HBase 等。
2. SparkStreaming实施流计算的过程
上图所示,为 SparkStreaming 实时流计算的过程。我们总结如下知识点:
1. SparkStreaming 接收连续不断的数据流,然后将数据流离散化成一批一批的数据,然后底层是以批为单位进行处理。
2. SparkStreaming 的批大小由程序员自定义,单位是时间,比如秒或毫秒。所以每一批中的数据量是不尽相同的。
3. 由上述机制,决定了 SparkStreaming 在实时流处理过程中,吞吐量比较高(以批为单位进行处理),但是不能做到低延迟。
4. SparkStreaming 中的每一批数据,称为 DStream(离散化的数据流 Discretized-Stream)。
5. SparkStreaming 就是对每个 DStream 进行计算处理。DStream 底层就是一个 RDD。所以表面上是对 DStream 操作,但是底层仍然会转为对 RDD 的操作。即以往所学的 RDD 的操作,比如:map,flatMap,filter,reduceByKey 都可以用于 DStream。
6. 因为底层会转为 RDD 的操作,所以 SparkStreaming 在做流处理时,有天然的容错性保证。这是由 RDD 的容错机制来决定的。
3. 架构设计
SparkStreaming是一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如Kafka、Flume、Twitter、ZeroMQ和TCP 套接字)进行类似Map、Reduce和Join等复杂操作,并将结果保存到外部文件系统、数据库或应用到实时仪表盘。
Spark Streaming是将流式计算分解成一系列短小的批处理作业,也就是把Spark Streaming的输入数据按照batch size(如1秒)分成一段一段的数据DStream(Discretized-离散化 Stream),每一段数据都转换成Spark中的RDD(Resilient Distributed Dataset),然后将Spark Streaming中对DStream的Transformations操作变为针对Spark中对RDD