Apache Storm

来源:互联网 发布:中国科普数据图片 编辑:程序博客网 时间:2024/06/06 12:28

@Source
https://www.tutorialspoint.com/apache_storm/apache_storm_core_concepts.htm

Apache Storm 从一端实时读取原始数据流 , 经过一系列小处理单元(bolts), 在另一端输出被加工好的数据。
下图展示了其核心概念:

enter image description here

Tuple

TupleStorm 主要的数据结构, 它是一系列元素的集合。默认的, Tuple 支持所有的数据类型, 一般搞成一组逗号分隔的值传递给storm cluster

Stream

Stream 是一组无序的tuples。

Spouts

stream 的数据源, 从Twitter Streaming API、 Apache Kafka patition 队列接收原始数据。 你也能够从数据源自己读取数据写入 SpoutsISpout 是其核心接口, 还有一些专门的接口, 如:IRickSpoutBaseRichSpoutKafkaSpout 等等。

Bolts

Bolts 是最基本的 处理逻辑单元, Spouts 传递数据到BoltsBolts 产生新的输出流, Bolts 可以执行过滤、聚合、连接、数据库交互等操作,并会发送到接下来的一个或多个 boltsIBolt 是实现bolts 的核心接口, 一些通用的接口包括IRichBoltIBasicBolt 等等。
看一个案例:
enter image description here

Topology

dSpoutsbolts 被连接在一起, 他们组成了一个topology, 实时应用的逻辑定义在topology, 简单来说, 一个topology 就是一个有向图, 顶点表示计算, 边表示数据流。
一个简单的topology 开始于spouts Spout 发射数据到一个或多个bolts, 经过处理后的数据流可以继续发射到其它blotsStorm 保持topology 总是运行, 知道killtopologyStorm 主要任务就是运行topology 并且可以同时运行多个。

Tasks

现在已经有了spoutsbolts 的基本概念, 他们是topology 最小的逻辑单元, 一个topology 由一个spoutbolts 数组组成。他们必须按照特定的顺序执行。无论是bolt 还是spout 的执行都被称作是Tasks , 简单说, 一个task 就是一个spoutbolt 的执行, spoutbolt 可以同时跑多个实例。

Workers

一个topology 以分布式的形式, 运行在多个worker节点上, Storm 均匀的分发task 到多个worker结点。worker 的任务就是监听jobs , 对于新来的job启动和关闭进程。

Stream Grouping

数据流在spoutsbolts 或着boltbolt 之间“漂移”, Stream Grouping 控制tuples 如何在topology 中路由, 下面介绍四种内置的grouping 方式。

Shuffle Grouping

相同数量的tuples 被分别随机分发到所有worker

enter image description here

Field Grouping

有相同值的tuples 被分组到一起。比如统计单词的时候, 所有worker 上跑出来的单词, 相同的单词必须扔到一个同一个worker
enter image description here

Global Grouping

所有的tuple 都被分到一组, 发射到同一个bolt
enter image description here

All Grouping

一个tuple 被发射到所有的bolt 实例, 这种分组策略, 被用于向bolts 发送信号, 在join 操作上很有用。
enter image description here

原创粉丝点击