深入理解Storm:分布式实时计算系统解析
5星 · 超过95%的资源 需积分: 10 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提供了一个灵活、高性能的实时数据处理平台,适合需要实时分析、流处理和事件驱动应用的场景。理解并熟练掌握其核心概念和组件,对于构建和维护实时计算系统至关重要。
2017-09-03 上传
2018-04-09 上传
点击了解资源详情
2019-04-26 上传
2015-12-16 上传
2021-05-09 上传
2010-03-30 上传
2012-11-12 上传
顺天
- 粉丝: 0
- 资源: 3
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章