数据岗位面试题更新 2026-08-05

请阐述 Spark Streaming 的容错机制,并说明它依靠哪些手段来确保数据不丢失?

数据风险判断技术原理Spark Streaming

考察说明

考查对 Spark Streaming 容错机制及其数据不丢失保障原理的理解。

回答思路

  1. 【回答框架 1】Spark Streaming 的容错基于 RDD 的 lineage 机制,即每个批次的数据被转换为 RDD,RDD 的依赖关系可以重新计算,故障时可依据血统重算丢失的分区。
  2. 【回答框架 2】对于输入数据,若使用 HDFS 等可靠数据源,接收的数据会被复制到多个节点,且通过预写日志(WAL)持久化接收到的数据,防止接收器故障导致的数据丢失。
  3. 【回答框架 3】为了exactly-once语义,需要结合消息队列的偏移量管理,如 Kafka 的 offset 存储,以及输出操作的事务性(如写外部存储的幂等性)来实现端到端的精确一次处理。
  4. 【回答框架 4】Spark Streaming 的容错还依赖于检查点机制,周期性保存应用的状态(如 DStream 操作和 RDD 的元数据),以便故障后从检查点恢复。
  5. 【关键点 1】核心是 RDD 的 lineage 机制,通过血统重算丢失分区。
  6. 【关键点 2】WAL 预写日志保证接收的数据不丢失,配合 HDFS 等可靠存储。
  7. 【关键点 3】检查点机制保存应用状态,用于故障恢复。
  8. 【关键点 4】端到端 exactly-once 需要外部系统协调,如 Kafka offset 和幂等输出。
  9. 【易错点 1】切勿误以为仅靠 Spark 内部机制就能保证 exactly-once,必须结合 sink 的幂等性。
  10. 【易错点 2】不要混淆 RDD 血统和检查点的作用,前者用于重算,后者用于状态恢复。