1、Streaming定位
是Spark体系内的流式处理框架(和Storm对比)
2、和Storm对比
Storm:数据像水流一样,最基本的单位是tuple——毫秒级
Streaming:把水状的数据,按照时间进行离散化处理——秒级
3、和Spark Core对比
1.关系:
Spark Core是核心的计算引擎,支撑了很多项目,Streaming是其中一个
2.算子:
Core中,算子有两类:transformation和action ——> 懒惰机制
Streaming,算子有两类:transformation和output ——> 懒惰机制
3.开发形式:
Core:针对RDD开发,处理结构以DAG形式表现
Streaming:针对Dstream开发,处理结构以DstreamGraph形式表现
Dstream和RDD的关系:
1)Dstream:内部包含多个RDD,代表了一系列的连续的RDD,每一个RDD包含特定的时间间隔
2)DStream里面的各种操作是可以映射到内部的RDD上进行的
3)DStream的操作可以通过RDD的transformation生成新的Dstream
4)DStream的算子和RDD的算子不一样:
1)transformation
2)output:
执行算子:forEachRDD:对接外部服务:Hbase、Kafka、Hive
输出算子:saveAsTextFile:直接做输出
5、时间窗口
例如:统计最近一个小时内的PV量,要求每一分钟更新一次
1)窗口总长度(window length)—— 一个小时
2)滑动时间间隔(slide interval)—— 一分钟
6、Streaming架构:
master:分配任务:任务结构(Graph)
worker:处理任务,包含:接收数据+处理数据
client:喂数据
处理数据模式,2类:
1)recevier模式:被动——异步
优点:快
缺点:启动多executor
2)direct模式:主动——同步
优点:一个executor占用资源少
缺点:慢
架构图:
D-Stream lineage:DstreamGraph图
worker:Input receiver:对接client作数据接收
worker: Task excution:对数据做进一步计算
worker: Block manager、Comm Manager:数据管理模块
7、容错——数据容错WAL
streaming中wal工作原理:
当Driver失败重启后,恢复的流程: