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

请描述 Apache Storm 与 Zookeeper 协作的方式,并说明两者在集群运行中各自承担的核心职责和具体交互流程。

数据系统设计技术原理Apache Storm

考察说明

考查对分布式计算框架与协调服务协作机制的理解。

回答思路

  1. 【回答框架 1】Apache Storm 依赖 Zookeeper 进行集群协调。Storm 集群中的 Nimbus、Supervisor 和 Worker 都会使用 Zookeeper 来存储和同步元数据、状态信息以及任务分配情况。
  2. 【回答框架 2】Nimbus 将提交的拓扑(Topology)信息、任务分配计划和心跳状态写入 Zookeeper。Supervisor 通过监听 Zookeeper 上的节点来获取分配给自己的任务,并据此启动或停止 Worker 进程。Worker 之间也会通过 Zookeeper 进行状态同步,例如故障检测和任务再分配。
  3. 【回答框架 3】Zookeeper 在 Storm 中扮演了协调中心的角色,主要存储三类数据:集群节点的心跳信息、拓扑的元数据(如任务分配、调度结果)以及 Worker 的执行状态。当 Nimbus 或 Supervisor 出现故障时,由于状态已经持久化在 Zookeeper 中,可以通过重启并重新从 Zookeeper 读取状态来恢复。
  4. 【回答框架 4】Nimbus 与 Zookeeper 的交互是主动写入和读取,而 Supervisor 与 Zookeeper 的交互更多是订阅和响应。Zookeeper 的临时节点(Ephemeral Node)用于表示节点的心跳,一旦连接断开,节点自动删除,从而实现故障自动发现。
  5. 【回答框架 5】这种设计使得 Storm 的控制器(Nimbus)和工作者(Supervisor)可以无状态化,状态集中存储在 Zookeeper,提升了系统的可靠性和可扩展性。但其代价是 Zookeeper 成为关键依赖,若 Zookeeper 集群故障,Storm 将无法进行任务调度和状态同步。
  6. 【关键点 1】Nimbus 将拓扑和任务分配信息写入 Zookeeper。
  7. 【关键点 2】Supervisor 监听 Zookeeper 获取任务并管理 Worker 生命周期。
  8. 【关键点 3】Zookeeper 通过临时节点心跳实现故障自动检测。
  9. 【关键点 4】Zookeeper 使 Nimbus 和 Supervisor 无状态化,状态集中存储。
  10. 【关键点 5】Zookeeper 是 Storm 集群协调的关键依赖组件。
  11. 【易错点 1】混淆 Zookeeper 在 Storm 中的作用,误以为它负责数据流转或消息传递。
  12. 【易错点 2】忽略临时节点的心跳机制,将其视为永久状态存储。
  13. 【易错点 3】夸大 Zookeeper 的高可用性,未考虑其故障对集群的全局影响。