参考资料

  1. OwnCloud/Server 是一个开源自托管文件同步和共享平台
  2. JupyterHub 是一个多用户版本的 Jupyter Notebook
  3. docker安装windows详细说明以及案例
  4. docker安装rabbitmq详细说明以及案例
  5. NATS Streaming(现更名为STAN)是基于NATS的消息流系统
  6. Rocket.Chat 是一款开源的团队聊天平台
  7. Docker与Kubernetes的关系?
  8. Cirros是一个轻量级的Linux发行版

Storm 是一个分布式实时计算系统

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