请阐述 Spark Streaming 应对大规模实时数据时,借助哪些机制分别保障容错能力与负载均衡效果?
考察说明
考查对 Spark Streaming 容错机制和负载均衡策略的理解。
回答思路
- 【回答框架 1】容错方面,Spark Streaming 基于 RDD 的 lineage 实现数据恢复。每个批次数据对应一个 RDD,若某节点故障导致分区丢失,可通过上游数据重算重建,同时利用 checkpoints 保存元数据和中间状态,避免长时间计算链的恢复成本。
- 【回答框架 2】负载均衡方面,Spark Streaming 的 DStream 生成的任务按分区参与分布式调度。默认采用接收器均匀分布输入数据,并通过配置分区数与资源,使计算任务在 executor 间尽量均衡,Spark 调度器会依据资源情况分配任务。
- 【回答框架 3】进一步,背压机制动态调节接收速率:根据处理速度反馈,自动限制每秒接收的记录数,避免数据积压失衡。这既保护系统稳定性,也辅助实现各节点负载的合理调节。
- 【关键点 1】容错核心为 RDD lineage 重算与 checkpoint 持久化。
- 【关键点 2】输入数据通过接收器分区和调度器分配到多个 executor 平衡处理。
- 【关键点 3】背压机制根据处理能力动态调整摄入速率,降低过载风险。
- 【易错点 1】不要将背压误认为负载均衡手段,它主要避免接收速度超过处理能力。
- 【易错点 2】容错只能保证数据不丢,不保证状态完全一致,需额外考虑状态存储。