Apache Storm集群架构 悠悠 2022-06-04 06:56 175阅读 0赞 Apache Storm的主要亮点是,它是一个容错,快速,没有“单点故障”(SPOF)分布式应用程序。我们可以根据需要在多个系统中安装Apache Storm,以增加应用程序的容量。 让我们看看Apache Storm集群如何设计和其内部架构。下图描述了集群设计。 ![8f0fe601ca0de4360ce179b2f0cb1678.png_wxfrom_5_wx_lazy_1][] Apache Storm有两种类型的节点,Nimbus(主节点)和Supervisor(工作节点)。Nimbus是Apache Storm的核心组件。Nimbus的主要工作是运行Storm拓扑。Nimbus分析拓扑并收集要执行的任务。然后,它将任务分配给可用的supervisor。 Supervisor将有一个或多个工作进程。Supervisor将任务委派给工作进程。工作进程将根据需要产生尽可能多的执行器并运行任务。Apache Storm使用内部分布式消息传递系统来进行Nimbus和管理程序之间的通信。 <table style="width: 736px;"> <tbody> <tr> <th style="padding: 2px 4px;border-top-width: 1px;border-color: rgb(204, 204, 204);width: 284px;background-color: rgb(255, 255, 255);">组件</th> <th style="padding: 2px 4px;border-top-width: 1px;border-color: rgb(204, 204, 204);background-color: rgb(255, 255, 255);">描述</th> </tr> <tr> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">Nimbus(主节点)</td> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">Nimbus是Storm集群的主节点。集群中的所有其他节点称为工作节点。主节点负责在所有工作节点之间分发数据,向工作节点分配任务和监视故障。</td> </tr> <tr> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">Supervisor(工作节点)</td> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">遵循指令的节点被称为<strong>Supervisors</strong>。Supervisor有多个工作进程,它管理工作进程以完成由nimbus分配的任务。</td> </tr> <tr> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">Worker process(工作进程)</td> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">工作进程将执行与特定拓扑相关的任务。工作进程不会自己运行任务,而是创建执行器并要求他们执行特定的任务。工作进程将有多个执行器。</td> </tr> <tr> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">Executor(执行者)</td> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">执行器只是工作进程产生的单个线程。执行器运行一个或多个任务,但仅用于特定的spout或bolt。</td> </tr> <tr> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">Task(任务)</td> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;">任务执行实际的数据处理。所以,它是一个spout或bolt。</td> </tr> <tr> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: middle;box-sizing: border-box;">ZooKeeper framework(ZooKeeper框架)</td> <td style="padding: 2px 4px;min-width: 40px;border-color: rgb(204, 204, 204);vertical-align: top;box-sizing: border-box;"><p style="margin-bottom: 5px;word-wrap: break-word;line-height: 1.7;">Apache的ZooKeeper的是使用群集(节点组)自己和维护具有强大的同步技术共享数据之间进行协调的服务。Nimbus是无状态的,所以它依赖于ZooKeeper来监视工作节点的状态。</p><p style="margin-bottom: 5px;word-wrap: break-word;line-height: 1.7;">ZooKeeper的帮助supervisor与nimbus交互。它负责维持nimbus,supervisor的状态。</p></td> </tr> </tbody> </table> Storm是无状态的。即使无状态性质有它自己的缺点,它实际上帮助Storm以最好的可能和最快的方式处理实时数据。 Storm虽然不是完全无状态的。它将其状态存储在Apache ZooKeeper中。由于状态在Apache ZooKeeper中可用,故障的网络可以重新启动,并从它离开的地方工作。通常,像monit这样的服务监视工具将监视Nimbus,并在出现任何故障时重新启动它。 Apache Storm还有一个称为Trident拓扑的高级拓扑,它具有状态维护,并且还提供了一个高级API,如Pig。我们将在接下来的章节中讨论所有这些功能。 ![6e8b6c624b6448a4ebd266c6d81987d1.png][] [8f0fe601ca0de4360ce179b2f0cb1678.png_wxfrom_5_wx_lazy_1]: https://img-blog.csdnimg.cn/img_convert/8f0fe601ca0de4360ce179b2f0cb1678.png;wxfrom=5&wx_lazy=1 [6e8b6c624b6448a4ebd266c6d81987d1.png]: /images/20220604/0d517bdfe30f4725a01d98660b8a8278.png
还没有评论,来说两句吧...