目录
- Spark Streaming概述
- Spark Core&Spark SQL&Spark Streaming简单概括
- Spark Streaming架构
- Spark Streaming 架构图
- Spark Streaming 背压机制
- DStream概述
- DStream特点
Spark Streaming概述
- Spark Streaming
是Saprk框架用于流式数据处理的功能模块,
在 Spark Streaming 中,数据处理的单位是一小批而不是单条,而数据采集却是逐条进行的,
因此 Spark Streaming 中需要设置时间间隔
使得数据汇总到一定的量后再一并操作 - 和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 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特点
- 一旦StreamingContext已经启动,
则不能再添加新的 streaming computations
- 一旦一个StreamingContext已经停止(StreamingContext.stop()),
不能再重启
- 在一个 JVM 内,
同一时间只能启动一个StreamingContext
- stop() 的方式停止StreamingContext, 也会把SparkContext停掉.
如果仅仅想停止StreamingContext, 则应该这样: stop(false)
- 一个SparkContext
可以重用去创建多个StreamingContext, 前提是以前的StreamingContext已经停掉,并且SparkContext没有被停掉