1. Spark Streaming 结构
spark streaming treat a stream of data as a table to which data is continuously appended
2.Spark计算引擎两种模式
2.1 两种模式
- Batch mode微批处理
- Continues mode流处理
Batch mode按照一定的时间间隔进行处理,划分成batch,每一个batch生成一个spark job,包含若干个spark tasks,到spark sql和spark core进行计算执行。
Continues Mode
会生成一个long running job,实时的进行spark任务的作业
2.2 容错机制
容错,在任务中断后,流处理引擎有能力恢复任务,保证数据上的不重不漏,维持数据一致性。
从数据一致性角度出发,3种水平:
- At most once,最多交付一次,存在漏数据的风险
- At least once,最少交付一次,存在重复的风险
- Exactly once, 不重不漏
Batch mode:
依靠checkpoint机制进行容错处理,Checkpoint 机制会把该 Micro-batch 的元信息全部存储到开发者指定的文件系统路径,当出现作业或是任务失败时,引擎只需要读取这些事先记录好的元信息,就可以恢复数据流的“断点续传”。
Continues mode:
通过Epoch Marker进行容错处理,在引擎处理并交付数据的过程中,每当遇到 Epoch Marker 的时候,引擎都会把对应Epoch 中最后一条消息的 Offset 写入日志,从而实现容错
两者的区别
- Batch mode吞吐量大,但是延迟稍高,s级
- Conitues mode吞吐量小些,但是延迟低,可以达到ms级
- 目前而言,仅Batch mode模式支持聚合操作
- 在容错机制上,batch mode依靠checkpoint进行断点记录,流入数据先记录在checkpoint处,再进行处理;continues mode使用Epoch Marker记录上一次处理节点,异步记录延迟更低