Apache Storm核心概念

Apache Storm从一端读取实时数据的原始流,并将其传递通过一系列小处理单元,并在另一端输出处理/有用的信息。

下图描述了Apache Storm的核心概念。

现在让我们仔细看看Apache Storm的组件 - 

组件描述
TupleTuple是Storm中的主要数据结构。它是有序元素的列表。默认情况下,Tuple支持所有数据类型。通常,它被建模为一组逗号分隔的值,并传递到Storm集群。
Stream流是元组的无序序列。
Spouts流的源。通常,Storm从原始数据源(如Twitter Streaming API,Apache Kafka队列,Kestrel队列等)接受输入数据。否则,您可以编写spouts以从数据源读取数据。“ISpout”是实现spouts的核心接口,一些特定的接口是IRichSpout,BaseRichSpout,KafkaSpout等。
BoltsBolts是逻辑处理单元。Spouts将数据传递到Bolts和Bolts过程,并产生新的输出流。Bolts可以执行过滤,聚合,加入,与数据源和数据库交互的操作。Bolts接收数据并发射到一个或多个Bolts。 “IBolt”是实现Bolts的核心接口。一些常见的接口是IRichBolt,IBasicBolt等。

让我们来看一个“Twitter分析”的实时示例,看看如何在Apache Storm中建模。下图描述了结构。

“Twitter分析”的输入来自Twitter Streaming API。Spout将使用Twitter Streaming API读取用户的tweets,并作为元组流输出。来自spout的单个元组将具有twitter用户名和单个tweet作为逗号分隔值。然后,这个元组的蒸汽将被转发到Bolt,并且Bolt将tweet拆分成单个字,计算字数,并将信息保存到配置的数据源。现在,我们可以通过查询数据源轻松获得结果。

拓扑

Spouts和Bolts连接在一起,形成拓扑结构。实时应用程序逻辑在Storm拓扑中指定。简单地说,拓扑是有向图,其中顶点是计算,边缘是数据流。

简单拓扑从spouts开始。Spouts将数据发射到一个或多个Bolts。Bolt表示拓扑中具有最小处理逻辑的节点,并且Bolts的输出可以发射到另一个Bolts作为输入。

Storm保持拓扑始终运行,直到您终止拓扑。Apache Storm的主要工作是运行拓扑,并在给定时间运行任意数量的拓扑。

任务

现在你有一个关于Spouts和Bolts的基本想法。它们是拓扑的最小逻辑单元,并且使用单个Spout和Bolt阵列构建拓扑。应以特定顺序正确执行它们,以使拓扑成功运行。Storm执行的每个Spout和Bolt称为“任务”。简单来说,任务是Spouts或Bolts的执行。在给定时间,每个Spout和Bolt可以具有在多个单独的螺纹中运行的多个实例。

进程

拓扑在多个工作节点上以分布式方式运行。Storm将所有工作节点上的任务均匀分布。工作节点的角色是监听作业,并在新作业到达时启动或停止进程。

流分组

数据流从Spouts流到Bolts,或从一个Bolts流到另一个Bolts。流分组控制元组在拓扑中的路由方式,并帮助我们了解拓扑中的元组流。有四个内置分组,如下所述。

随机分组

在随机分组中,相等数量的元组随机分布在执行Bolts的所有工人中。下图描述了结构。

字段分组

元组中具有相同值的字段组合在一起,其余的元组保存在外部。然后,具有相同字段值的元组被向前发送到执行Bolts的同一进程。例如,如果流由字段“字”分组,则具有相同字符串“Hello”的元组将移动到相同的工作者。下图显示了字段分组的工作原理。

全局分组

所有流可以分组并向前到一个Bolts。此分组将源的所有实例生成的元组发送到单个目标实例(具体来说,选择具有最低ID的工作程序)。

所有分组

所有分组将每个元组的单个副本发送到接收Bolts的所有实例。这种分组用于向Bolts发送信号。所有分组对于连接操作都很有用。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache Storm 是一种开源的分布式实时计算系统,其核心概念包括以下几个方面: 1. Topology(拓扑):Storm 应用程序的计算结构被称为拓扑,它由一组节点(Spout 和 Bolt)和它们之间的数据流组成。拓扑定义了 Storm 应用程序的数据流转方式和计算逻辑。 2. Spout:Spout 是 Storm 中的数据源,用于读取数据并将其发送给下一个 Bolt。Spout 可以从文件、网络、消息队列等多种来源读取数据,并将其转换为数据流。 3. Bolt:Bolt 是 Storm 中的计算节点,用于处理和转换数据流。Bolt 可以执行各种计算任务,例如过滤、聚合、计数、统计等,并将结果发送给下一个 Bolt 或者 Spout。 4. Stream:Stream 是 Storm 中的数据流,它是由 Spout 发送并经过一系列 Bolt 处理后形成的。Stream 中包含了一系列元组(Tuple),每个元组都是一个包含多个字段的数据结构。 5. Tuple:Tuple 是 Storm 中的基本数据单元,它是一个不可变的数据结构,包含了多个字段。Tuple 通过 Stream 在 Spout 和 Bolt 之间传递,每个 Bolt 可以对 Tuple 进行处理和转换。 6. Task:Task 是 Storm 中的计算任务,它是 Bolt 或者 Spout 的执行实例。每个任务都会处理一个或多个 Tuple,并且可以在不同的节点上执行。 7. Worker:Worker 是 Storm 中的计算节点,它负责运行一个或多个 Task,并且可以在集群中的不同节点上执行。每个 Worker 运行在一个独立的 JVM 进程中,可以同时运行多个 Task。 8. Nimbus:Nimbus 是 Storm 中的主节点,它负责接收和分配拓扑,并且协调集群中的所有工作节点。Nimbus 会监控所有工作节点的状态,并且在出现故障时自动进行容错处理。 9. Supervisor:Supervisor 是 Storm 中的工作节点,它负责接收和执行任务,并且向 Nimbus 报告节点的状态。每个 Supervisor 可以运行多个 Worker,并且可以在同一台机器上运行多个 Supervisor。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值