[BOOK] Getting Started with Storm
"Getting Started with Storm" --Continuous streaming computation with Twitter's cluster technology By Jonathan Leibiusky, Gabriel Eisbruch, Dario Simonassi ### 相关知识点 #### 一、Storm简介与特性 **Storm** 是一款由Twitter开源的分布式实时计算系统,能够处理大规模数据流。它提供了一种简单而强大的模型来定义和执行复杂的流处理任务。 - **特性:** - **容错性**:Storm能够自动重新启动失败的任务,并且可以重新分配工作负载。 - **高吞吐量**:Storm被设计为能够处理非常高的数据吞吐量。 - **可扩展性**:Storm架构易于扩展,可以根据需求增加或减少节点数量。 - **灵活性**:支持多种编程语言,可以方便地集成到现有的应用程序和服务中。 - **低延迟**:Storm能够实现毫秒级别的数据处理延迟,适合对实时性有高要求的应用场景。 #### 二、Storm的基础概念 - **拓扑(Topology)**:是Storm中最基本的运行单元,代表一个完整的流处理流程。它包含一系列的任务(Task),这些任务通过数据流(Stream)连接起来。 - **Spout**:数据源组件,负责将数据注入到Storm集群中。Spout可以模拟读取数据源(如消息队列、数据库等)的行为,并将数据以事件的形式发布出去。 - **Bolt**:处理逻辑组件,接收来自Spout的数据并进行处理,之后可以将结果发送给其他Bolt继续处理或者输出到外部系统。 - **Worker**:每个Worker是一个JVM进程,在该进程中执行一个或多个Task。Worker由Nimbus(集群管理器)调度到各个Supervisor(节点管理器)上运行。 - **Executor**:负责在一个Worker进程中创建并管理Task的生命周期。 - **Task**:是最小的处理单元,每一个Bolt或Spout可以被分解成多个Task并发执行。 #### 三、部署模式 - **本地模式(Local Mode)**:在单个JVM中模拟整个Storm集群的运行环境,主要用于开发和测试阶段。 - **远程模式(Remote Mode)**:在真实的分布式环境中运行,需要配置Nimbus、Supervisor等组件。 #### 四、示例:Hello World Storm 1. **检查Java安装**:确保系统已安装Java并配置了正确的环境变量。 2. **创建项目**:使用Maven或其他构建工具创建一个新的Java项目,并添加必要的依赖库。 3. **创建第一个拓扑**: - **Spout**:定义一个简单的Spout类,用于模拟数据输入。例如,可以周期性地发出固定的字符串数组中的元素。 - **Bolt**:定义一个Bolt类,用于接收来自Spout的数据,并打印出来。这通常通过重写`execute()`方法实现。 - **主类**:编写主类,配置拓扑并提交到Storm集群执行。 #### 五、数据流分组 - **Shuffle Grouping**:随机将数据项分发到下游的Bolt实例中。 - **Fields Grouping**:根据指定字段的值将数据项分发到特定的Bolt实例中。 - **All Grouping**:将所有数据项都复制到下游的所有Bolt实例中。 - **Direct Grouping**:允许上游Bolt直接向下游特定Bolt实例发送数据。 - **Global Grouping**:将所有数据项都发送到下游的同一个Bolt实例中。 - **None Grouping**:默认的分组策略,相当于Shuffle Grouping。 #### 六、结语 通过《Getting Started with Storm》这本书,读者可以全面了解Storm的基础知识和核心概念,并通过实践操作掌握如何使用Storm构建高效的流处理应用。无论是对于初学者还是有一定经验的开发者来说,都是很好的学习资源。
剩余104页未读,继续阅读
- hitrocky2013-03-14不错,有帮助!
- 粉丝: 2
- 资源: 25
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助