【Spark分布式内存计算框架——Spark Streaming】2. Streaming 概述(下)Streaming 计算模式、SparkStreaming 计算思想

1.3 Streaming 计算模式

流式处理任务是大数据处理中很重要的一个分支,关于流式计算的框架也有很多,如比较出名的Storm流式处理框架,是由Nathan Marz等人于 2010 年最先开发,之后将Storm开源,成为Apache 的顶级项目,Trident 对Storm进行了一个更高层次的抽象;另外由LinkedIn贡献给社区的Samza 也是一种流处理解决方案,不过其构建严重依赖于另一个开源项目 Kafka。Spark Streaming 构建在Spark的基础之上,随着Spark的发展,Spark Streaming和Structured Streaming【Spark分布式内存计算框架——Spark Streaming】2. Streaming 概述(下)Streaming 计算模式、SparkStreaming 计算思想_第1张图片
也受到了越来越多的关注。

不同的流式处理框架有不同的特点,也适应不同的场景,主要有如下两种模式。

模式一:原生流处理(Native)

  • 所有输入记录会一条接一条地被处理,上面提到的 Storm 和 Flink都是采用这种方式;
    【Spark分布式内存计算框架——Spark Streaming】2. Streaming 概述(下)Streaming 计算模式、SparkStreaming 计算思想_第2张图片

模式二:微批处理(Batch)

  • 将输入的数据以某一时间间隔 T,切分成多个微批量数据,然后对每个批量数据进行处理,Spark Streaming 和 StructuredStreaming采用的是这种方式;
    【Spark分布式内存计算框架——Spark Streaming】2. Streaming 概述(下)Streaming 计算模式、SparkStreaming 计算思想_第3张图片
1.4 SparkStreaming 计算思想

Spark Streaming是Spark生态系统当中一个重要的框架,它建立在Spark Core之上,下图也可以看出Sparking Streaming在Spark生态系统中地位。
【Spark分布式内存计算框架——Spark Streaming】2. Streaming 概述(下)Streaming 计算模式、SparkStreaming 计算思想_第4张图片
官方定义Spark Streaming模块:
在这里插入图片描述
SparkStreaming是一个基于SparkCore之上的实时计算框架,可以从很多数据源消费数据并对数据进行实时的处理,具有高吞吐量和容错能力强等特点。
【Spark分布式内存计算框架——Spark Streaming】2. Streaming 概述(下)Streaming 计算模式、SparkStreaming 计算思想_第5张图片
对于Spark Streaming来说,将流式数据按照时间间隔BatchInterval划分为很多部分,每一部分Batch(批次),针对每批次数据Batch当做RDD进行快速分析和处理
它的核心是DStream,DStream类似于RDD,它实质上一系列的RDD的集合,DStream可以按照秒、分等时间间隔将数据流进行批量的划分。首先从接收到流数据之后,将其划分为多个batch,然后提交给Spark集群进行计算,最后将结果批量输出到HDFS或者数据库以及前端页面展示等等。

概念:DStream = Seq[RDD]
含义:DStream中封装很多RDD,每个RDD数据就是每个时间间隔内产生的数据。

如下图所示:将流式数据按照【X seconds】划分很多批次Batch,每个Batch数据封装到RDD中进行处理分析,最后每批次数据进行输出。
【Spark分布式内存计算框架——Spark Streaming】2. Streaming 概述(下)Streaming 计算模式、SparkStreaming 计算思想_第6张图片
对于目前版本的Spark Streaming而言,其最小的Batch Size的选取在0.5~5秒钟之间,所以Spark Streaming能够满足流式准实时计算场景,对实时性要求非常高的如高频实时交易场景则不太适合。

2. 入门案例

SparkStreaming官方提供Example案例,功能描述:从TCP Socket数据源实时消费数据,对每批次Batch数据进行词频统计WordCount,流程图如下:
【Spark分布式内存计算框架——Spark Streaming】2. Streaming 概述(下)Streaming 计算模式、SparkStreaming 计算思想_第7张图片

1、数据源:TCP Socket
从哪里读取实时数据,然后进行实时分析
2、数据终端:输出控制台
结果数据输出到哪里
3、功能:对每批次数据实时统计,时间间隔BatchInterval:1s

文档:http://spark.apache.org/docs/2.2.0/streaming-programming-guide.html#a-quick-example

你可能感兴趣的:(spark,分布式,大数据,tcp/ip,sql)