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

请说明在 Apache Storm 中如何定义并提交一个 Topology,包括主要步骤和涉及的关键类或方法?

数据编码实现技术原理Apache Storm

考察说明

考察对 Apache Storm 编程模型和提交流程的掌握程度。

回答思路

  1. 【回答框架 1】Topology 是 Storm 中用于封装实时计算逻辑的抽象,它由 Spout(数据源)和 Bolt(处理逻辑)通过 Stream Grouping 连接构成一个有向无环图(DAG)。
  2. 【回答框架 2】定义 Topology 通常使用 TopologyBuilder 类,通过 setSpout() 添加数据源,并通过 setBolt() 添加处理节点,同时指定输入流的分组方式(如 shuffleGrouping、fieldsGrouping 等)。
  3. 【回答框架 3】提交 Topology 有两种方式:本地模式(LocalCluster)用于开发和测试,通过 cluster.submitTopology() 提交;生产环境使用 StormSubmitter.submitTopology(),它会把 Topology 提交到 Storm 集群,由 Nimbus 负责分发。
  4. 【回答框架 4】在提交前,需要设置 Topology 的配置参数,例如 worker 进程数、Spout/Bolt 的并行度、消息超时时间等,这些通过 Config 对象设置。
  5. 【关键点 1】Topology 由 Spout 和 Bolt 组成,通过 TopologyBuilder 构建。
  6. 【关键点 2】使用 setSpout 和 setBolt 添加组件,并指定分组策略。
  7. 【关键点 3】本地模式用 LocalCluster,集群模式用 StormSubmitter。
  8. 【关键点 4】通过 Config 设置拓扑参数。
  9. 【关键点 5】提交后由 Nimbus 分配任务到 Supervisor 执行。
  10. 【易错点 1】不要混淆本地模式与集群模式提交方式。
  11. 【易错点 2】连接 Spout 和 Bolt 时,必须正确指定输入流及分组方式,否则拓扑可能无法正确执行。