Storm基本概念是什么

发布时间:2021-12-23 11:43:27 作者:iii
来源:亿速云 阅读:129
# Storm基本概念是什么

## 一、Storm概述

Apache Storm是一个开源的分布式实时计算系统,由Nathan Marz团队于2011年创建,后成为Apache顶级项目。它能够可靠地处理无界数据流(即持续不断产生的数据),适用于实时分析、在线机器学习、持续计算等场景。

### 核心特性
- **低延迟**:毫秒级响应能力
- **高容错**:自动处理节点故障
- **可扩展**:线性扩展能力
- **保证数据不丢失**:精确一次(exactly-once)处理语义

## 二、核心架构组件

### 1. Topology(拓扑)
Storm的核心计算单元,是由Spout和Bolt组成的**有向无环图(DAG)**。一个拓扑持续运行直到显式终止。

```java
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("spout", new RandomSentenceSpout(), 5);
builder.setBolt("split", new SplitSentenceBolt(), 8).shuffleGrouping("spout");
builder.setBolt("count", new WordCountBolt(), 12).fieldsGrouping("split", new Fields("word"));

2. Spout(喷口)

数据流的源头,通常从消息队列(如Kafka)或数据库读取数据。常见实现: - KafkaSpout:从Kafka消费数据 - DRPCSpout:用于分布式RPC

3. Bolt(螺栓)

数据处理单元,可执行: - 过滤(Filtering) - 聚合(Aggregation) - 连接(Joins) - 数据库交互等操作

public class WordCountBolt extends BaseBasicBolt {
    private Map<String, Integer> counts = new HashMap<>();
    
    public void execute(Tuple tuple, BasicOutputCollector collector) {
        String word = tuple.getString(0);
        counts.merge(word, 1, Integer::sum);
        collector.emit(new Values(word, counts.get(word)));
    }
}

三、关键概念详解

1. 数据模型

概念 说明
Tuple 基本数据单元,包含命名字段列表
Stream 由相同字段结构的Tuple组成的序列
Stream ID 多流场景下的标识符(默认”default”)

2. 分组策略(Grouping)

决定Tuple如何路由到Bolt:

分组类型 描述
Shuffle Grouping 随机均匀分发(负载均衡
Fields Grouping 按指定字段哈希分发(相同字段值到同一任务)
All Grouping 广播到所有下游任务
Global Grouping 全部发送到同一个任务(通常是ID最小的)
Direct Grouping 由发送方指定目标任务

3. 可靠性机制

// 可靠处理示例
collector.emit(tuple, new Values(word)); // 锚定到输入tuple
collector.ack(tuple); // 显式确认

四、集群架构

1. 物理组件

角色 职责
Nimbus 主节点,负责拓扑提交、任务分配(类似Hadoop的JobTracker)
Supervisor 工作节点,管理Worker进程
Worker 实际执行任务的JVM进程(每个Worker运行特定拓扑的部分任务)
ZooKeeper 协调集群状态,实现Nimbus与Supervisor的解耦

Storm基本概念是什么

2. 并行度控制

通过以下参数组合决定实际并发: - Worker数量Config.setNumWorkers() - Executor数量:组件并行度参数 - Task数量setNumTasks()(默认等于Executor数)

五、与其他技术的对比

特性 Storm Spark Streaming Flink
处理模型 原生流处理 微批处理 原生流处理
延迟 毫秒级 秒级 毫秒级
状态管理 需自行实现 内置 完善的内置支持
语义保证 At-least-once Exactly-once Exactly-once
成熟度 快速发展中

六、典型应用场景

  1. 实时监控系统

  2. 金融风控

    • 实时反欺诈
    • 股票价格波动分析
  3. 物联网(IoT)

    • 传感器数据分析
    • 设备状态预警
  4. 推荐系统

    • 用户行为实时分析
    • 动态调整推荐策略

七、发展演进

TridentTopology topology = new TridentTopology();
topology.newStream("spout", spout)
       .groupBy(new Fields("word"))
       .persistentAggregate(new MemoryMapState.Factory(), new Count(), new Fields("count"));

结语

Storm作为最早的实时计算系统之一,虽然面临Flink等新框架的竞争,但其简单直接的编程模型和经过验证的稳定性,使其在特定场景仍具优势。理解其核心概念有助于根据业务需求选择合适的流处理技术。 “`

推荐阅读:
  1. storm的基本概念安装测试
  2. storm记录--3--Storm的基本概念

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

storm

上一篇:Mac下如何安装和搭建Homestead 2.0环境

下一篇:mysql中出现1053错误怎么办

相关阅读

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

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