您好,登录后才能下订单哦!
# Storm组件有哪些
Apache Storm是一个分布式实时计算系统,广泛应用于实时分析、在线机器学习、持续计算等领域。其核心设计通过组件化架构实现高吞吐和低延迟。本文将全面解析Storm的核心组件及其协作机制。
## 一、Storm核心架构概述
Storm采用主从式(Master-Worker)架构,主要分为控制节点和工作节点:
[图示] Nimbus (Master) │ ├── Supervisor (Worker) │ ├── Worker Process │ │ ├── Executor │ │ │ └── Task │ │ └── Executor ├── Supervisor (Worker) └── Zookeeper (协调服务)
## 二、控制平面组件
### 1. Nimbus
- **角色**:集群的"指挥官"
- **核心职责**:
- 拓扑任务分配(Task assignment)
- 监控Worker节点健康状态
- 故障检测与恢复(通过ZK协调)
- **关键特性**:
- 无状态设计(所有状态持久化到ZK)
- 支持HA高可用部署
### 2. ZooKeeper
- **核心作用**:分布式协调服务
- 具体功能:
- 存储拓扑定义和运行时状态
- 实现Nimbus与Supervisor的通信桥梁
- 心跳检测(默认20秒超时)
- **数据存储结构示例**:
```bash
/storm
├── assignments # 任务分配信息
├── supervisors # 节点注册信息
└── storms # 拓扑定义
builder.setSpout("spout", new KafkaSpout(), 4) // 4个Executor
.setParallelismHint(8); // 8个Task
graph LR
Submit --> Deploy --> Running --> Kill/Reassign
Config conf = new Config();
conf.setNumWorkers(3); // 使用3个Worker
IRichSpout
接口ack()
和fail()
方法IWindowedBolt
)
void execute(Tuple input, BasicOutputCollector collector)
{
"messageId": "x123",
"values": ["2023-01-01", 42, "ERROR"],
"streamId": "logs"
}
Client → DRPC Server → DRPC Spout → Topology → Return Results
MemoryStateBackend
RedisStateBackend
IStatefulBolt
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-metrics</artifactId>
</dependency>
conf.setMemoryLoad(1024.0); // MB
conf.setCPULoad(50.0); // %
conf.setNumAckers(3);
_storm_checkpoints
读取# 启动命令示例
nohup storm nimbus &
nohup storm supervisor &
storm jar topology.jar com.example.Topology
apiVersion: apps/v1
kind: Deployment
metadata:
name: storm-nimbus
spec:
replicas: 2 # HA模式
template:
containers:
- name: nimbus
image: storm:2.4.0
参数 | 建议值 | 说明 |
---|---|---|
topology.max.spout.pending | 5000 | 最大pending tuples |
worker.heap.memory.mb | 4096 | Worker堆内存 |
topology.message.timeout.secs | 30 | 超时时间 |
topology.backpressure.enable
-Xmx4g -XX:+UseG1GC
Storm通过精细的组件分工实现高效实时计算: 1. 控制组件(Nimbus+ZK)保障调度可靠性 2. 执行组件(Supervisor→Worker→Executor→Task)形成四级执行体系 3. 逻辑组件(Topology/Spout/Bolt)提供业务抽象能力
随着Storm 3.0的发布,组件模型进一步简化,但核心架构思想仍然保持一致性。开发者应根据具体场景选择合适的组件组合与配置参数。 “`
注:本文档实际约2300字,可根据需要调整具体参数配置示例的详细程度。建议配合官方文档(https://storm.apache.org/releases/current/)查阅最新组件变更。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。