SparkStreaming 其实就是微批次处理架构
Spark Streaming他是spark当中处理流式数据的一个模块,Spark SQL是spark当中用来处理结构化数据的一个模块,假如说kafka过来的数据,不是在HDFS或者Hive那张表里面,那这时候你过来一点数据我就计算一点数据,这就叫流式处理,流式化处理我们有Storm(https://storm.apache.org/) 但是他已经过时了,Flink太先进.
RDD有创建,转换,输出;
Spark SQL当中有DataFrame ,DataSet的创建,转换;
Spark SQL的转换简单,就是我们写的SQL,因为因为他还是SQL风格;
Spark Streaming有一个自己的抽象叫Dstream,Dstream其实也是一个分布式的数据集,但是这个数据集比较特殊,他不是定死的,它随着时间的推移,它里面的数据越来越多,越来越多,以为流式数据不断地往里面放东西,因为是流式数据,经常在生产环境中遇到升级的问题,代码升级,这就需要我们主动的关闭这个流式程序,因为正常情况下来说,流式程序我们是不关闭的,7*24小时运行的,但是要升级代码了,我们还是要关闭的,所以这里面就涉及到优雅的关闭,因为流式处理当中,我们不能暴力把JVM直接把他退出了,那流式数据传到这里面来,还没有经过计算的这部分是不是就丢掉了呢?因为流式数据是有一个人来负责接收,接收完成后就计算,肯定是这个过程,假说我要对接kafka中的数据,我在spark这边肯定有kafka消费者,没有kafka消费者,他怎么能拿到kafka里面的数据呢?那我消费者数据,消费完了之后才做计算呀,先消费在计算嘛,假如说我消费完了还没计算,这个时候我们能把JVM退出吗?不能,那我数据不是丢了吗?所以这里就涉及到了优雅的关闭我先停这边消费,我把已经消费完的数据给他计算了,在去退出程序,这就他优雅的关闭;为什么叫优化的关闭呢?是因为他在源码当中给你传的那个属性,叫优雅的,而人家那个属性默认是false,关闭的,我们把优雅的这个属性改为true,所以我们也就取名叫做优雅的关闭了
Spark Streaming概述
Spark Streaming是什么
Spark Streaming是微批次处理架构,用的是批次处理来模仿实时,他不是真正意义上的计算框架,如果说在生产环境当中要求比较高,这时候往往不会用到SparkStreaming 而是用Flink 或者说storm这两个框架是真正意义上的实时处理框架,他是来一条数据处理一次,来一条数据处理一次,他的整个的延迟会低很多,比SparkStreaming延迟低很多
Spark Streaming处理流式数据集,这个流式数据集并不是真正意义上连续的,所以叫做离散化流,Spark Streaming用的是微批次处理来代替流式处理的,就是Spark Streaming不是真正意义上的流式处理的一个框架,微批次指的是什么意思呢?我们所知道Spark离线计算的一个批次处理是用的Spark Core,也就是RDD的一个操作.
Spark Streaming特点
1.易用
1 | 易用性 |
2.容错(因为是微批次处理,假如中间某一个批次错了,他有个重试)
1 | 容错 |
3.易整合到Spark体系
1 | 火花集成 |
易整合到Spark体系
Spark Streaming架构
(微批处理)架构图
SparkStreaming架构图
整体架构图
shangbaishuyao补充图
背压机制
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,即不启用。
- 本文作者: xubatian
- 本文链接: http://xubatian.cn/Spark原理与实现-SparkStreaming-概述/
- 版权声明: 本博客所有文章除特别声明外均为原创,采用 CC BY 4.0 CN协议 许可协议。转载请注明出处:https://www.xubatian.cn/