Storm 拓扑的配置有哪些?

推荐答案

在 Apache Storm 中,拓扑的配置主要通过 Config 对象来完成。以下是一些常见的配置项:

  1. TOPOLOGY_WORKERS:设置拓扑中使用的 worker 进程数量。
  2. TOPOLOGY_DEBUG:启用或禁用调试模式。
  3. TOPOLOGY_MAX_SPOUT_PENDING:设置每个 spout 可以同时处理的最大 tuple 数量。
  4. TOPOLOGY_MESSAGE_TIMEOUT_SECS:设置 tuple 的超时时间。
  5. TOPOLOGY_SERIALIZATIONS:注册自定义的序列化器。
  6. TOPOLOGY_MAX_TASK_PARALLELISM:设置拓扑中每个组件的最大并行度。
  7. TOPOLOGY_STATS_SAMPLE_RATE:设置统计信息的采样率。
  8. TOPOLOGY_FALL_BACK_ON_JAVA_SERIALIZATION:是否回退到 Java 序列化。
  9. TOPOLOGY_SKIP_MISSING_KRYO_REGISTRATIONS:是否跳过缺失的 Kryo 注册。
  10. TOPOLOGY_TICK_TUPLE_FREQ_SECS:设置 tick tuple 的频率。

本题详细解读

1. TOPOLOGY_WORKERS

TOPOLOGY_WORKERS 用于设置拓扑中使用的 worker 进程数量。每个 worker 进程可以运行多个 executor 线程。增加 worker 数量可以提高拓扑的并行度和吞吐量。

2. TOPOLOGY_DEBUG

TOPOLOGY_DEBUG 用于启用或禁用调试模式。在调试模式下,Storm 会记录更多的日志信息,便于排查问题。

3. TOPOLOGY_MAX_SPOUT_PENDING

TOPOLOGY_MAX_SPOUT_PENDING 用于设置每个 spout 可以同时处理的最大 tuple 数量。超过这个数量后,spout 将停止发送新的 tuple,直到部分 tuple 被 ack 或 fail。

4. TOPOLOGY_MESSAGE_TIMEOUT_SECS

TOPOLOGY_MESSAGE_TIMEOUT_SECS 用于设置 tuple 的超时时间。如果 tuple 在超时时间内未被 ack 或 fail,Storm 会认为该 tuple 处理失败。

5. TOPOLOGY_SERIALIZATIONS

TOPOLOGY_SERIALIZATIONS 用于注册自定义的序列化器。Storm 默认使用 Kryo 进行序列化,但可以通过此配置项注册自定义的序列化器。

6. TOPOLOGY_MAX_TASK_PARALLELISM

TOPOLOGY_MAX_TASK_PARALLELISM 用于设置拓扑中每个组件的最大并行度。这个配置项可以限制组件的并行度,防止资源过度消耗。

7. TOPOLOGY_STATS_SAMPLE_RATE

TOPOLOGY_STATS_SAMPLE_RATE 用于设置统计信息的采样率。采样率越高,统计信息越精确,但也会增加系统开销。

8. TOPOLOGY_FALL_BACK_ON_JAVA_SERIALIZATION

TOPOLOGY_FALL_BACK_ON_JAVA_SERIALIZATION 用于设置是否回退到 Java 序列化。当 Kryo 序列化失败时,可以尝试使用 Java 序列化。

9. TOPOLOGY_SKIP_MISSING_KRYO_REGISTRATIONS

TOPOLOGY_SKIP_MISSING_KRYO_REGISTRATIONS 用于设置是否跳过缺失的 Kryo 注册。如果设置为 true,Storm 会跳过未注册的类,而不是抛出异常。

10. TOPOLOGY_TICK_TUPLE_FREQ_SECS

TOPOLOGY_TICK_TUPLE_FREQ_SECS 用于设置 tick tuple 的频率。tick tuple 是一种特殊的 tuple,用于触发定时任务。

纠错
反馈