参考资料

  1. EulerOS 是华为推出的企业级 Linux 操作系统
  2. io.js是Node.js的一个分支,由社区主导开发,旨在提供更快的迭代和更开放的治理模式
  3. FileZilla Server是一款开源FTP服务器软件
  4. MySQL 是一个开源的关系型数据库管理系统
  5. Hello-World 是一个最简单的 Docker 镜像
  6. Oracle Linux 是由 Oracle 公司提供的企业级 Linux 发行版
  7. Jitsi Meet 是一个开源的视频会议解决方案
  8. 1Panel 是一个现代化的开源 Linux 服务器运维管理面板

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 序列化