📅  最后修改于: 2023-12-03 14:59:21.034000             🧑  作者: Mango
Apache Storm 是一个开源的分布式实时计算系统,原本由 Twitter 开发并开源,现在已归属于 Apache 组织。它可以在大规模数据集上进行实时分析处理,并能够实现可靠的数据流传递。Apache Storm 的核心理念是提供一个可靠的、高吞吐的、横向可扩展的分布式系统用于实时处理高速数据流。
Apache Storm 的一个典型的集群结构包含以下组件:
在使用 Storm 处理数据时,通常需要编写一个拓扑(topology),拓扑包含一系列 Spout 和 Bolt。Spout 负责读取数据源,例如读取 Kafka 中的消息或者从文件系统中读取某个文件,然后将其传送给 Bolt 处理。Bolt 可以对数据流进行过滤、聚合、并对数据作进一步的处理和分析。
每个 Storm 拓扑在集群中都有一个 Master 协调节点来分配任务,此节点称为 Nimbus。 Nimbus 会为每个 Topology 引擎分配一组可用 slave 节点(Worker 节点)。每个 slave 节点都是由独立的后台可靠进程 Supervisor 托管,该过程负责安装、具体运行和故障恢复一组 worker 进程,每个 worker 进程都执行 Spout 或 Bolt 任务。
当拓扑被提交(submitted)给 Storm 后,Spout 节点作为源头,从数据源不断地读取数据,并将其传递给拓扑中的第一个 Bolt。这些 Bolt 会处理数据,发送出新的元组(tuple)到下一个 Bolt。由于所有 Bolt 是并行运行的,数据可以从多个路径通过不同的 Bolt 流向拓扑中的下一个 Bolt。
元组(tuple) 是 Storm 中的基本数据单元,是一个包含任意数量字段的有序列表。每个 Bolt 都会获取元组,对其进行处理并生成新的元组,并将它们传递到输出流上,新的元组必须通过指定字段和值的方式进行注解。在接下来的 Bolt 中,需要对相同字段和值组合的元组进行处理和过滤,因此,这些元组流必须被命名和声明,以便拓扑中的其他组件可以引用并处理。
以下是一些常用的 Storm 命令:
启动 Storm:
bin/storm nimbus &
bin/storm supervisor &
bin/storm ui &
查看集群信息:
bin/storm list
提交拓扑:
bin/storm jar topology.jar com.company.Main arg1 arg2 arg3
终止拓扑:
bin/storm kill topologyName
Apache Storm 是一个非常强大的实时计算系统,具有高可靠性、高吞吐量和强大的分布式特性。Storm 的体系结构中的各个组件都得到了充分的考虑和优化,使得整个系统能够在海量数据中实现快速高效地处理和分析。掌握 Storm 的基础架构是使用 Storm 进行实时数据处理和分析的第一步。