写点什么

Storm 概念与架构

  • 2022-10-29
    北京
  • 本文字数:1315 字

    阅读完需:约 4 分钟

Storm概念与架构

Storm 提出了几个新的概念,理解这些概念对于学习 Storm 非常重要。Storm 中核心概念如下:

1)Tuple:由一组可序列化的元素构成,每个元素可以是任意类型,包括 Java 原生类型、String、byte[]、自定义类型(必须是可序列化的)等。


2)Stream:无限的 Tuple 序列形成一个 Stream。每个 Stream 由一个唯一 ID、一个对 Tuple 中元素命名的 Schema 以及无限 Tuple 构成。


3)Topology:Storm 中的用户应用程序被称为“Topology”,这类似于 MapReduce 中的“Job”。它是由一系列 Spout 和 Blot 构成的 DAG,其中每个点表示一个 Spout 或 Blot,每个边表示 Tuple 流动方向。


4)Spout:Stream 的数据源,它通常从外部系统(比如消息队列)中读取数据,并发射到 Topology 中。Spout 可将数据(Tuple)发射到一个或多个 Stream 中。


5)Bolt:消息处理逻辑,可以是对收到的消息的任意处理逻辑,包括过滤、聚集、与外部数据库通信、消息转换等。Blot 可进一步将产生的数据(Tuple)发射到一个或多个 Stream 中。


在一个 Topology 中,每个 Spout 或 Blot 通常由多个 Task 构成,同一个 Spout 或 Blot 中的 Task 之间相互独立,它们可以并行执行,如图 13-4 所示。可类比 MapReduce Job 理解:一个 MapReduce Job 可看作一个两阶段的 DAG,其中 Map 阶段可分解成多个 Map Task, Reduce 阶段可分解成多个 Reduce Task,相比之下,Storm Topology 是一个更加通用的 DAG,可以有多个 Spout 和 Blot 阶段,每个阶段可进一步分解成多个 Task。

6)Stream Grouping:Stream Grouping 决定了 Topology 中 Tuple 在不同 Task 之间是的传递方式。Storm 主要提供了多种 Stream Grouping 实现,常用的有:

  • Shuffle Grouping:随机化的轮训方式,即 Task 产生的 Tuple 将采用轮训方式发送给下一类组件的 Task。

  • LocalOrShuffle Grouping:经优化的 Shuffle Grouping 实现,它使得同一 Worker 内部的 Task 优先将 Tuple 传递给同 Worker 的其他 Task。

  • Fields Grouping:某个字段值相同的 Tuple 将被发送给同一个 Task,类似于 MapReduce 或 Spark 中的 Shuffl e 实现。


一个 Storm 集群由三类组件构成:Nimbus、Supervisor 和 ZooKeeper,它们的功能如下:

1)Nimbus:集群的管理和调度组件,通常只有一个,负责代码分发、任务调度、故障监控及容错(重新将失败的任务调度到其他机器上)等。Nimbus 是无状态的,可通过“kill -9”杀掉它而不影响正常应用程序的运行。


2)Supervisor:计算组件,通常有多个,负责执行实际的计算任务根据 Nimbus 指令启动或停止 Worker 进程。与 Nimbus 类似,Supervisor 也是无状态。

  • Worker:实际的计算进程,每个 Supervisor 可启动多个 Worker 进程(需静态为每个 Worker 分配一个固定端口号),但每个 Worker 只属于特定的某个 Topology。

  • Executor:每个 Worker 内部可启动多个 Executor 线程,以运行实际的用户逻辑代码(Task)。每个 Executor 可以运行同类组件(同一个 Topology 内的 Spout 或 Bolt)中一个或多个 Task。

  • Task:用户逻辑代码,由 Executor 线程根据上下文调用对应的 Task 计算逻辑。


3)ZooKeeper:Nimbus 与 Supervisor 之间的协调组件,存储状态信息和运行时统计信息,具体包括:

  • Supervisor 的注册与发现,监控失败的 Supervisor。

  • Worker 通过 ZooKeeper 向 Nimbus 发送包含 Executor 运行状态的心跳信息 。

  • Supervisor 通过 ZooKeeper 向 Nimbus 发送包含自己最新状态的心跳信息。


发布于: 刚刚阅读数: 4
用户头像

InfoQ签约作者 2018-11-30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
Storm概念与架构_Storm_穿过生命散发芬芳_InfoQ写作社区