# Storm简介

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/14243.html | 发布：2022-12-12 | 更新：2022-12-16 | 分类：建站教程、投稿分享

## 1.2 特性

 
 
- Storm是一个分布式实时流式计算平台。主要特性如下： 
- 简单的编程模型：类似于MapReduce降低了并行批处理复杂性，Storm降低了实时处理的复杂性，只需实现几个接口即可（Spout实现ISpout接口，Bolt实现IBolt接口）。 
- 支持多种语言：你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持，只需实现一个简单的Storm通信协议即可。 
- 容错性：nimbus、supervisor都是无状态的, 可以用kill -9来杀死Nimbus和Supervisor进程, 然后再重启它们,任务照常进行; 当worker失败后, supervisor会尝试在本机重启它。 
- 分布式：计算是在多个线程、进程和服务器之间并行进行的。 
- 持久性、可靠性：消息被持久化到本地磁盘，并且支持数据备份防止数据丢失。 
- 可靠的消息处理：Storm保证每个消息至少能得到一次完整处理。任务失败时，它会负责从消息源重试消息（ack机制）。 
- 快速、实时：Storm保证每个消息能能得到快速的处理。 

 

## 1.3 与常用其他大数据计算平台对比

 
 
- Storm vs. MapReduce Storm的一个拓扑常驻内存运行，MR作业运行完了进行就被kill了；storm是流式处理，MR是批处理；Storm数据在内存中不写磁盘，而MR会与磁盘进行交互；Storm的DAG（有向无环图）模型可以组合多个阶段，而MR只可以有MAP和REDUCE两个阶段。 

 

## 2. Storm的核心组件

 

## 2.1 拓扑结构

 
 
- topology 是storm中运行的一个实时应用程序的名称（拓扑），因为各个组件间的消息流动而形成逻辑上的拓扑结构。 
- Strom在运行中可分为spout与bolt两个组件，其中，数据源从spout开始，数据以tuple的方式发送到bolt，多个bolt可以串连起来，一个bolt也可以接入多个spot/bolt。运行时Topology如下图： 

 

## 2.2 编程模型的一些基本概念

 

### 2.2.1 Tuple

 
 
- stream 表示数据的流向，流式Storm的核心抽象。一个流是一个无界Tuple序列，Tuple可以包含整性、长整型、短整型、字节、字符、双精度数、浮点数、布尔值和字节数组。用户可以通过定义序列化器，在本机Tuple使用自定义类型； 

 

### 2.2.2 Spout组件

 
 
- spout 在一个topology中获取源数据流的组件，通常情况下spout会从外部数据源读取数据，然后转换为topology内部的源数据； 

 

### 2.2.3 Bolt组件

 
 
- bolt 接收数据，然后执行处理的组件，用户可以其中执行自己想要的操作（Bolt可以完成过滤、业务处理、连接运算、连接访问数据库等业务 
- 核心方法 
- prepare：初始化  
execute：处理一个tuple暑假，tuple对象中包含了元数据信息  
cleanup：shutdown之前的资源清理操作

 

stream grouping（流分组） 流分组是拓扑定义的一部分，为每个Bolt指定应该接收哪个流作为输入。在bolt的任务中定义流应该如何分区，Storm有7个内置的流分组接口（随机分组（Shuffle grouping）、字段分组（Fields grouping）、全部分组（All grouping）、全局分组（Global grouping）、无分组（None grouping）、直接分组（Direct grouping）、本地或随机分组（Local or shuffle grouping）） 

 

### 2.2.4 Stream grouping组件

 
 
- stream grouping（流分组） 流分组是拓扑定义的一部分，为每个Bolt指定应该接收哪个流作为输入。在bolt的任务中定义流应该如何分区，Storm有7个内置的流分组接口（随机分组（Shuffle grouping）、字段分组（Fields grouping）、全部分组（All grouping）、全局分组（Global grouping）、无分组（None grouping）、直接分组（Direct grouping）、本地或随机分组（Local or shuffle grouping））

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
