目录

  • ​​Spark Streaming概述​​
  • ​​Spark Core&Spark SQL&Spark Streaming简单概括​​
  • ​​Spark Streaming架构​​
  • ​​Spark Streaming 架构图​​
  • ​​Spark Streaming 背压机制​​
  • ​​DStream概述​​
  • ​​DStream特点​​

Spark Streaming概述

  1. Spark Streaming ​​是Saprk框架用于流式数据处理的功能模块,​​在 Spark Streaming 中,数据​​处理的单位是一小批而不是单条,而数据采集却是逐条进行的,​​因此 Spark Streaming 中​​需要设置时间间隔​​使得数据汇总到一定的量后再一并操作
  2. 和Spark基于RDD的概念很相似,Spark Streaming​​使用了一个高级抽象离散化流(discretized stream),叫作DStreams​

Spark Core&Spark SQL&Spark Streaming简单概括

spark core

spark sql

spark streaming

程序执行入口

SparkContext

SparkSession

StreamingContext

对应的API

RDD

DS/DF

DStream

##Spark Streaming特点

​微批次​​​、​​准实时​​流式数据处理框架

Spark Streaming架构

Spark Streaming 架构图

Spark Streaming概述 特点 架构_spark

Spark Streaming 背压机制

Spark​​ 1.5以前版本,​​​用户如果要限制Receiver的数据接收速率,​​可以通过设置静态配制参数“spark.streaming.receiver.maxRate”的值来实现,此举虽然可以通过限制接收速率,来适配当前的处理能力,防止内存溢出,但也会引入其它问题。​​比如:producer数据生产高于maxRate,当前集群处理能力也高于maxRate,这就会造成资源利用率下降等问题

为了更好的协调数据接收速率与资源处理能力,​​1.5版本开始​​​Spark Streaming可​​以动态控制数据接收速率来适配集群数据处理能力。​​​背压机制(即Spark Streaming Backpressure): ​​根据JobScheduler反馈作业的执行信息来动态调整Receiver数据接收率​

通过属性​​spark.streaming.backpressure.enabled​​来控制是否启用backpressure机制,默认值false,即不启用。

DStream概述

Discretized Stream是Spark Streaming的基础抽象。​​在内部实现上,DStream是一系列连续的RDD来表示,每个RDD含有一段时间间隔内的数据,对这些RDD的转换是由Spark引擎来计算的,​​ DStream的操作隐藏了的大多数的细节, 只提供给开发者了方便实用的高级 API

DStream特点

  1. 一旦StreamingContext已经启动, ​​则不能再添加新的 streaming computations​
  2. 一旦一个StreamingContext已经停止(StreamingContext.stop()), ​​不能再重启​
  3. 在一个 JVM 内, ​​同一时间只能启动一个StreamingContext​
  4. stop() 的方式停止StreamingContext, 也会把SparkContext停掉. ​​如果仅仅想停止StreamingContext, 则应该这样: stop(false)​
  5. 一个SparkContext​​可以重用去创建多个StreamingContext, 前提是以前的StreamingContext已经停掉,并且SparkContext没有被停掉​