开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:SparkStreaming 原理_容错】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/692/detail/12139
SparkStreaming 原理_容错
内容介绍:
一、热备
二、冷备
三、重放
四、总结
一、热备
val lines: Dstrean[string] 。ssC .socketTextstrean(
Hostname=args(0),
Port=args(1).toInt,
storageLevel=storageLevel .MENORY_AND_DISK_SER)
这行代码中的StorageLevel .MEMORY_ AND_ DISK_ SER 的作用是什么?其实就是热备份
●当 Regeiver 获取到数据要存储的时候,是交给 BlockManager 存储的
●如果设置了 StorageLevel .MEMORY_ AND _DISK_ SER, 则意味着 BlockManager 不仅会在本机存储,也会发往其它的主机进行存储,本质就是冗余备份
●如果某一个计算失败了,通过冗余的备份,再次进行计算即可,以避免数据丢失。
这是默认的容错手段。
二、冷备
冷备在 Spark Streaming 中的手段叫做 WAL (预写日志)
WAL: 预写日志
●假设 receiver 获取到了一份数据
●先不存,先写日志
●写完日志以后,写入 BlockManager
●当 Receiver 获取到数据后,会交给 BlockManager 存储
●在存储之前先写到 WAL 中, WAL 中保存了 Redo Log , 其实就是记录了数据怎么产生的,以便于恢复的时候通 过Log 恢复
●当出错的时候,通过 Redo Log 去重放数据
三、重放
●有一些上游的外部系统是支持重放的,比如说 Kafka
●Kafka 可以根据 0ffset 来获取数据
●当 SparkStreaming 处理过程中出错了,只需要通过 Kafka 再次读取即可
四、总结
有冗余备份就是热备,冷备也叫 redo.log,通过预写日志实现,redo.log 在当数据出错的时候,能够回到原来的时间点。重放借助了外部数据源的重放能力。
