参考资料

  1. MediaWiki 是一个免费开源的维基软件
  2. Neo4j 是一个高性能的 NoSQL 图形数据库
  3. 与虚拟机相比,Docker的优势是什么?
  4. Rust 是一种系统编程语言,专注于安全、并发和性能
  5. Amazon Linux 是亚马逊 AWS 官方维护的 Linux 发行版
  6. cpolar 是一款内网穿透工具
  7. Rocky Linux 是一个开源企业级操作系统
  8. Docker镜像(Image)是什么?

Storm 详细简介

Storm 是一个分布式实时计算系统,用于处理大规模数据流。由 Twitter 开发并开源,现为 Apache 顶级项目。核心设计目标是高吞吐、低延迟和容错性,适用于实时分析、在线机器学习等场景。

特点

  • 实时处理:毫秒级延迟

  • 水平扩展:支持动态增加节点

  • 容错机制:自动重启失败任务

  • 多语言支持:原生支持 Java/Clojure,通过 Shell/Python 适配器扩展

  • 精确一次语义:通过 Trident 实现

最新更新内容及时间

  • v2.5.0 (2023-05-18):

    • 移除对 Java 8 的支持(最低要求 Java 11)

    • 新增 Prometheus 监控集成

    • 优化 Kafka 连接器性能

    • 修复 ZooKeeper 连接泄漏问题

下载地址

官网地址

https://storm.apache.org

文档地址

Docker 安装示例

# 单节点模式
docker run -it -p 8080:8080 \
  -e STORM_ZOOKEEPER_SERVERS="zookeeper" \
  apache/storm:2.5.0 storm nimbus

# 使用 docker-compose
version: '3'
services:
  nimbus:
    image: apache/storm:2.5.0
    command: storm nimbus
    ports:
      - "6627:6627"
  supervisor:
    image: apache/storm:2.5.0
    command: storm supervisor
    depends_on:
      - nimbus

YAML 配置教程

# storm.yaml 示例
storm.zookeeper.servers:
  - "zk1.example.com"
  - "zk2.example.com"

nimbus.seeds: ["nimbus1.example.com"]

supervisor.slots.ports:
  - 6700
  - 6701
  - 6702
  - 6703

storm.local.dir: "/var/lib/storm"

# 启用 Kerberos 认证
storm.thrift.transport: "org.apache.storm.security.auth.kerberos.KerberosSaslTransportPlugin"

常见错误及解决

  1. No space left on device

    • 原因:storm.local.dir 磁盘空间不足

    • 解决:清理工作目录或增加存储空间

  2. Connection refused to ZooKeeper

    • 原因:ZK 服务未启动或网络不通

    • 解决:检查 storm.zookeeper.servers 配置和防火墙设置

  3. Topology submission timeout

    • 原因:Nimbus 负载过高

    • 解决:增加 nimbus.thrift.max_buffer_size 或优化拓扑结构

  4. Worker heartbeat timeout

    • 原因:Supervisor 节点资源不足

    • 解决:调整 worker.heap.memory.mb 或减少并发数

  5. Serialization exception

    • 原因:使用了不可序列化的 Spout/Bolt

    • 解决:实现 Serializable 接口或使用 Kryo 序列化

声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。