深入理解Storm:分布式实时计算系统解析

5星 · 超过95%的资源 需积分: 10 15 下载量 61 浏览量 更新于2024-09-11 收藏 8KB TXT 举报
"这篇文档是基于《get started with storm》.pdf编写的storm学习笔记,主要介绍了storm作为开源分布式实时计算平台的特点、核心概念以及基本组件的运作方式。" Storm是一个强大的开源分布式实时计算系统,它能高效地处理数据流,提供每秒一百万条元组(tuple)的处理能力。其核心概念包括topologies、节点类型、任务分配和数据模型等。 1. **Topologies**: 在Storm中,topologies类似于其他计算框架中的job,但它们是持续运行并不断处理数据的。一个topology是由多个组件(spouts和bolts)组成的计算网络图,这些组件通过数据流(stream)相互连接。 2. **节点类型**: - **Master Node**:运行Nimbus,Nimbus类似于Hadoop的JobTracker,负责调度和监控topologies的执行,确保任务的分配和数据的可靠性。 - **Worker Node**:运行Supervisor,每个worker进程在workernode上运行,等待Nimbus分配任务,并启动或停止工作进程。 3. **Task**: Task是worker中的执行线程,分为两类——spout和bolt线程,分别对应数据的产生和处理。 4. **Zookeeper协调**:Nimbus与Supervisor之间的协调工作通过Zookeeper这个分布式协调服务来完成,确保集群的高可用性和一致性。 5. **Stream与Topology**: - **Stream**:数据流,被视为无界的数据序列,Storm能够将一个stream转换成另一种数据格式。 - **Topology**:由spouts和bolts组成的计算网络,定义了数据流的处理路径和方式。 6. **Components**: - **Spouts**:数据源,像喷口一样导入数据,它们主动从外部数据源读取数据并转化为bolt可以处理的格式。Spouts必须实现IRichSpout接口,并且其`nextTuple()`方法会被不断调用来生成新的数据。 - **Bolts**:数据处理器,被动接收spout传递的数据,通过`execute(Tuple input)`方法执行处理逻辑,生成新的数据流。 7. **Tuple**:基本的消息数据单元,是一个值列表,用于在组件之间传递数据。复杂数据结构可以通过自定义序列化器(serializer)来封装和解封。 8. **并发控制**:在构建topology时,可以使用`setSpout()`和`setBolt()`设置并发线程数,不指定则默认为1。 9. **数据可靠性**:Storm通过容错机制保证即使在节点故障时,也不会丢失数据或消息,从而实现可靠的计算。 10. **编程模型**:开发者可以通过定义spouts和bolts的输出字段,以及它们之间的订阅关系来构建topology。例如,`declareOutputFields()`方法用于声明bolt的输出字段。 Storm提供了一个灵活、高性能的实时数据处理平台,适合需要实时分析、流处理和事件驱动应用的场景。理解并熟练掌握其核心概念和组件,对于构建和维护实时计算系统至关重要。