Apache Storm クラスターのアーキテクチャ


Apache Storm の主なハイライトは、これが耐障害性があり、高速で、「単一障害点」(SPOF) がない分散アプリケーションであることです。アプリケーションの容量を増やすために、必要に応じて Apache Storm を複数のシステムにインストールできます。

Apache Storm クラスターがどのように設計されているか、およびその内部アーキテクチャを見てみましょう。次の図は、クラスターの設計を示しています。

core_concept.jpg

Apache Storm には、Nimbus (マスター ノード) と Supervisor (ワーカー ノード) の 2 種類のノードがあります。 Nimbus は、Apache Storm のコア コンポーネントです。 Nimbus の主な仕事は、Storm トポロジを実行することです。 Nimbus はトポロジを分析し、実行するタスクを収集します。次に、タスクを利用可能なスーパーバイザーに割り当てます。

スーパーバイザーには 1 つ以上のワーカー プロセスがあります。スーパーバイザはタスクをワーカー プロセスに委任します。ワーカー プロセスは、必要なだけエグゼキュータを生成し、タスクを実行します。 Apache Storm は、Nimbus とハイパーバイザー間の通信に内部分散メッセージング システムを使用します。

コンポーネント説明
Nimbus (マスター ノード)Nimbus は Storm ですマスターノードをクラスター化します。クラスター内の他のすべてのノードはワーカー ノードと呼ばれます。マスター ノードは、すべてのワーカー ノード間でのデータの分散、ワーカー ノードへのタスクの割り当て、および障害の監視を担当します。
スーパーバイザー (ワーカー ノード) 指示に従うノードは スーパーバイザーと呼ばれます。 Supervisor には複数のワーカー プロセスがあり、ニンバスによって割り当てられたタスクを完了するためにワーカー プロセスを管理します。
ワーカー プロセス ワーカー プロセスは、特定のトポロジに関連するタスクを実行します。ワーカー プロセスは、タスク自体を実行するのではなく、エグゼキューターを作成し、それらに特定のタスクの実行を依頼します。ワーカー プロセスには複数のエグゼキュータがあります。
ExecutorExecutor は、ワーカー プロセスによって生成される単一のスレッドです。エグゼキュータは 1 つ以上のタスクを実行しますが、対象となるのは特定のスパウトまたはボルトのみです。
タスク タスクは実際のデータ処理を実行します。つまり注ぎ口かボルトです。
ZooKeeper フレームワーク (ZooKeeper フレームワーク)

Apache の ZooKeeper は、それ自身を使用し、自身間で共有データを維持し、強力な機能を持つクラスター (ノード グループ) です。同期技術 調整されたサービス。 Nimbus はステートレスであるため、ZooKeeper に依存してワーカー ノードのステータスを監視します。

ZooKeeper は、スーパーバイザーがニンバスと対話するのに役立ちます。ニンバスとスーパーバイザーのステータスを維持する責任があります。

Storm はステートレスです。ステートレスな性質には独自の欠点がありますが、実際には、Storm が可能な限り最良かつ最速の方法でリアルタイム データを処理するのに役立ちます。

ただし、Storm は完全にステートレスではありません。その状態を Apache ZooKeeper に保存します。この状態は Apache ZooKeeper で利用できるため、障害が発生したネットワークを再起動して、中断したところから作業することができます。通常、monit などのサービス監視ツールは Nimbus を監視し、障害が発生した場合には再起動します。

Apache Storm には、Trident トポロジと呼ばれる高度なトポロジもあり、状態の維持機能があり、Pig のような高レベルの API も提供します。これらすべての機能については、次の章で説明します。