目录
Spark Streaming概述
-
Spark Streaming
是Saprk框架用于流式数据处理的功能模块,
在 Spark Streaming 中,数据处理的单位是一小批而不是单条,而数据采集却是逐条进行的,
因此 Spark Streaming 中需要设置时间间隔
使得数据汇总到一定的量后再一并操作 -
和Spark基于RDD的概念很相似,Spark Streaming
使用了一个高级抽象离散化流(discretized stream),叫作DStream
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 背压机制
背压机制探讨的是Executor接收数据和处理数据速率是否一致的问题。
Executor中有个专门接收数据的Receiver,在Spark1.5版本以前,如果想要限制Receiver接收数据的速率,可以通过设置参数“spark.streaming.receiver.maxRate”来实现,但是有可能造成Executor接收数据的速率高于处理数据的速率,那就会造成计算结点内存溢出等问题。为了解决这个问题,Spark1.5版本后,提供了背压机制,简单点来说,就是根据Executor处理数据的速率来动态决定Receiver接收数据的速率。
相关参数为spark.streaming.backpressure.enabled,默认值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没有被停掉