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

请描述Apache Storm集群中Nimbus和Supervisor的协作机制,并分别说明它们各自承担的职责。

数据技术原理Apache StormZooKeeper

考察说明

考查对Storm集群架构中Nimbus与Supervisor角色及交互的理解,面试者需清晰说明主从节点的职责分工和协作流程。

回答思路

  1. 【回答框架 1】Nimbus是Storm集群的主节点,负责任务的分配与调度:接收客户端提交的拓扑,将其打包并上传到ZooKeeper,同时根据集群资源(如Supervisor的可用槽位)计算出每个任务在哪些Supervisor上执行,并将分配信息写入ZooKeeper。
  2. 【回答框架 2】Supervisor是工作节点上的守护进程,它监听ZooKeeper上的分配信息,并根据这些信息启动或停止对应的Worker进程(即执行任务的JVM)。每个Worker可以运行多个Executor,每个Executor负责执行一个或多个Task。Supervisor还会定期向ZooKeeper发送心跳以报告存活状态。
  3. 【回答框架 3】协作的关键在于ZooKeeper作为协调中枢:Nimbus和Supervisor之间不直接通信,而是通过ZooKeeper交换元数据。这种设计使得两者都可以是无状态的,如果Nimbus或Supervisor宕机,只要ZooKeeper中的数据还在,重启后就能恢复到一致状态。
  4. 【回答框架 4】Nimbus的失效不会立刻导致已运行的任务失败,因为任务运行由Supervisor和Worker负责;但新任务提交和故障重新分配会暂停。Supervisor的失效则会导致其上的任务无法运行,Nimbus会将其上的任务重新调度到其他有资源的Supervisor上。
  5. 【关键点 1】Nimbus负责任务分配与资源调度,Supervisor负责管理本机的Worker进程。
  6. 【关键点 2】两者与ZooKeeper交互,不直接通信;Nimbus/Supervisor均为无状态设计,依赖ZooKeeper保存元数据。
  7. 【关键点 3】Supervisor的心跳用于上报存活与资源槽信息。
  8. 【关键点 4】Nimbus失效不影响运行中任务,但新拓扑提交与故障转移会暂停。
  9. 【关键点 5】Supervisor默认启动一个Worker占一个槽位,具体并发度由拓扑配置决定。
  10. 【易错点 1】误区:认为Nimbus宕机导致整个集群停止工作;实际已运行的任务不受影响,仅调度功能失效。
  11. 【易错点 2】误区:忽略ZooKeeper在协作中的核心作用,误以为Nimbus直接控制Supervisor。
  12. 【易错点 3】注意:超级节点资源不足时,Nimbus分配策略可能失败,需合理设置Supervisor的槽位数量。