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

请说明 Apache Storm 中 Topology 组件的并行执行机制,并具体介绍调整并行度的方法有哪些?

数据问题拆解技术原理方案权衡Apache Storm

考察说明

考查对 Storm 流式计算模型中并行度概念及其调整方法的理解。

回答思路

  1. 【回答框架 1】Storm 中 Topology 由 Spout 和 Bolt 通过 Stream Grouping 连接构成。每个组件(Spout/Bolt)在集群中默认以单任务运行,但可通过设置并行度来提高处理能力。并行度由 Worker 进程、Executor 线程和 Task 实例三个层级控制。
  2. 【回答框架 2】执行机制上,Topology 提交后,Nimbus 将任务分配给 Supervisor 上的 Worker 进程;每个 Worker 运行若干 Executor 线程,每个 Executor 可执行一个或多个 Task,而 Task 是实际执行 Spout/Bolt 逻辑的最小单元。并行度即指这些层级的并发数量。
  3. 【回答框架 3】调整并行度的方法:配置中可设置 Worker 数量(例如在 Config 中设置 TOPOLOGY_WORKERS),并在定义 Topology 时通过 setSpout 和 setBolt 方法的第二个参数指定该组件的 Executor 数量。此外,可通过 setNumTasks 方法为每个 Executor 设置任务数(默认与 Executor 数相同)。注意:优先调整 Executor 数量,Task 数量主要用于流分组策略。
  4. 【回答框架 4】除了静态配置,还可以通过 Storm UI 或命令行工具进行动态调整,例如使用 'storm rebalance' 命令重新分配 Worker 和 Executor 数量,而无需重启 Topology。
  5. 【关键点 1】并行度由 Worker、Executor、Task 三级构成,Task 为最小执行单位。
  6. 【关键点 2】调整并行度主要修改 Worker 数量和组件的 Executor 数(setSpout/setBolt 参数)。
  7. 【关键点 3】Task 数可单独设置,影响分组策略,默认等于 Executor 数。
  8. 【关键点 4】动态调整使用 storm rebalance 命令。
  9. 【易错点 1】误认为 Topology 中组件并行度仅指 Task 数量,实际执行由 Executor 驱动,增加 Task 不提升吞吐。
  10. 【易错点 2】盲目提高 Worker 或 Executor 数可能导致资源争抢和调度开销,需根据集群资源进行压测。
  11. 【易错点 3】调整并行度时若各组件间分流不均衡,可能造成数据倾斜,需要结合 Stream Grouping 优化。