您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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
Storm依赖ZooKeeper进行协调服务,建议3节点或5节点集群:
下载安装包(以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
配置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
创建myid文件:
echo "1" > /var/lib/zookeeper/myid # 分别在各节点写入1/2/3
启动服务:
bin/zkServer.sh start
组件 | 作用 |
---|---|
Nimbus | 主节点,负责拓扑分发、任务调度和故障检测 |
Supervisor | 工作节点,启动/停止Worker进程 |
Worker | 实际执行任务的JVM进程 |
ZooKeeper | 存储集群状态、任务分配信息和心跳检测 |
graph TD
A[Client] -->|提交拓扑| B(Nimbus)
B -->|存储元数据| C[ZooKeeper]
C -->|同步信息| D[Supervisor]
D -->|启动| E[Worker]
E -->|心跳| C
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
# 必须配置项
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
Nimbus节点:
nohup bin/storm nimbus > /dev/null 2>&1 &
nohup bin/storm ui > /dev/null 2>&1 & # Web界面
Supervisor节点:
nohup bin/storm supervisor > /dev/null 2>&1 &
# 查看集群状态
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无响应超时 |
worker.childopts: "-Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=100"
现象:Failed to submit topology
检查: “`bash
tail -100f logs/nimbus.log
# 检查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字,包含技术细节、配置示例和可视化图表。如需完整版可执行脚本或更深入的特定场景配置说明,可进一步扩展相应章节。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。