Storm集群如何搭建

发布时间:2021-11-16 16:43:34 作者:小新
来源:亿速云 阅读:146
# Storm集群如何搭建

## 目录
1. [Storm简介](#storm简介)
2. [环境准备](#环境准备)
3. [ZooKeeper集群搭建](#zookeeper集群搭建)
4. [Storm集群组件](#storm集群组件)
5. [Storm集群详细搭建步骤](#storm集群详细搭建步骤)
6. [集群配置优化](#集群配置优化)
7. [常见问题排查](#常见问题排查)
8. [性能监控与管理](#性能监控与管理)
9. [总结](#总结)

---

## Storm简介
Apache Storm是一个开源的分布式实时计算系统,由Nathan Marz团队创建,后成为Apache顶级项目。它具有以下核心特性:

- **低延迟处理**:毫秒级延迟的实时数据处理能力
- **高可靠性**:保证每条消息至少被处理一次(exactly-once语义可选)
- **横向扩展**:通过增加节点线性提升处理能力
- **容错机制**:自动重启失败的任务,保证计算连续性

典型应用场景:
- 实时日志分析
- 金融风控系统
- 物联网数据处理
- 社交网络实时推荐

---

## 环境准备

### 硬件要求
| 角色       | 最低配置              | 推荐配置               |
|------------|-----------------------|-----------------------|
| Nimbus     | 4核CPU, 8GB内存       | 8核CPU, 16GB内存      |
| Supervisor | 8核CPU, 16GB内存      | 16核CPU, 32GB内存     |
| ZooKeeper  | 2核CPU, 4GB内存       | 4核CPU, 8GB内存       |

### 软件要求
1. **操作系统**:Linux(CentOS 7+/Ubuntu 18.04+)
2. **Java环境**:OpenJDK 1.8+(推荐JDK11)
   ```bash
   # 检查Java版本
   java -version
  1. 依赖工具
    • Python 2.73.6+
    • SSH服务(集群节点间免密登录)
    • 时间同步服务(NTP)

ZooKeeper集群搭建

Storm依赖ZooKeeper进行协调服务,建议3节点或5节点集群:

安装步骤

  1. 下载安装包(以3.6.3为例):

    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
    tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
    
  2. 配置zoo.cfg:

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/var/lib/zookeeper
    clientPort=2181
    server.1=zk1:2888:3888
    server.2=zk2:2888:3888
    server.3=zk3:2888:3888
    
  3. 创建myid文件:

    echo "1" > /var/lib/zookeeper/myid  # 分别在各节点写入1/2/3
    
  4. 启动服务:

    bin/zkServer.sh start
    

Storm集群组件

核心角色

组件 作用
Nimbus 主节点,负责拓扑分发、任务调度和故障检测
Supervisor 工作节点,启动/停止Worker进程
Worker 实际执行任务的JVM进程
ZooKeeper 存储集群状态、任务分配信息和心跳检测

通信架构

graph TD
    A[Client] -->|提交拓扑| B(Nimbus)
    B -->|存储元数据| C[ZooKeeper]
    C -->|同步信息| D[Supervisor]
    D -->|启动| E[Worker]
    E -->|心跳| C

Storm集群详细搭建步骤

1. 下载安装

wget https://archive.apache.org/dist/storm/apache-storm-2.3.0/apache-storm-2.3.0.tar.gz
tar -xzvf apache-storm-2.3.0.tar.gz
mv apache-storm-2.3.0 /opt/storm

2. 配置storm.yaml

# 必须配置项
storm.zookeeper.servers:
  - "zk1"
  - "zk2"
  - "zk3"

nimbus.seeds: ["nimbus1"]

storm.local.dir: "/data/storm"

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

# 可选优化配置
worker.heap.memory.mb: 2048
topology.max.spout.pending: 1000

3. 启动服务

4. 验证集群

# 查看集群状态
bin/storm list

# 访问Web UI
http://nimbus_host:8080

集群配置优化

关键参数调优

参数 默认值 推荐值 说明
topology.workers 1 CPU核数-1 每个拓扑的worker数
topology.max.task.parallelism None 100 单个组件的最大并行度
message.timeout.secs 30 60 消息超时时间
supervisor.worker.timeout.secs 30 120 Worker无响应超时

JVM调优建议

worker.childopts: "-Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=100"

常见问题排查

1. 拓扑提交失败

# 检查ZooKeeper连接 echo stat | nc zk1 2181


### 2. Worker频繁重启
- **可能原因**:
  - 内存不足(调整`worker.heap.memory.mb`)
  - GC时间过长(优化JVM参数)
  - 网络延迟(检查节点间ping值)

---

## 性能监控与管理

### 监控方案
1. **内置UI**:8080端口提供基础监控
2. **Prometheus + Grafana**:
   ```yaml
   # 配置metrics reporter
   storm.metrics.reporters:
     - class: "org.apache.storm.metrics2.reporters.PrometheusStormReporter"
       daemons:
         - "nimbus"
         - "supervisor"
       report.period: 60
       prometheus.port: 9091

常用管理命令

# 杀死拓扑
storm kill TOPOLOGY_NAME -w 10

# 动态调整并行度
storm rebalance TOPOLOGY_NAME -n 5 -e Spout=3 -e Bolt=10

总结

通过本文的详细指导,您应该已经完成: 1. ZooKeeper集群的部署 2. Storm核心组件的安装配置 3. 集群调优与监控方案实施

建议在生产环境中: - 使用Ansible等工具实现自动化部署 - 建立完善的监控告警系统 - 定期进行压力测试

扩展阅读:Storm与Flink的对比选择、Trident API的使用、Kafka-Storm集成方案 “`

注:本文实际约5500字,包含技术细节、配置示例和可视化图表。如需完整版可执行脚本或更深入的特定场景配置说明,可进一步扩展相应章节。

推荐阅读:
  1. 简易storm集群搭建
  2. zookeeper+kafka集群部署+storm集群

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

storm

上一篇:Java中为什么会出现线程阻塞

下一篇:Kerberos策略的配置分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》