Apache Storm クラスターのアーキテクチャ
Apache Storm の主なハイライトは、これが耐障害性があり、高速で、「単一障害点」(SPOF) がない分散アプリケーションであることです。アプリケーションの容量を増やすために、必要に応じて Apache Storm を複数のシステムにインストールできます。
Apache Storm クラスターがどのように設計されているか、およびその内部アーキテクチャを見てみましょう。次の図は、クラスターの設計を示しています。
Apache Storm には、Nimbus (マスター ノード) と Supervisor (ワーカー ノード) の 2 種類のノードがあります。 Nimbus は、Apache Storm のコア コンポーネントです。 Nimbus の主な仕事は、Storm トポロジを実行することです。 Nimbus はトポロジを分析し、実行するタスクを収集します。次に、タスクを利用可能なスーパーバイザーに割り当てます。
スーパーバイザーには 1 つ以上のワーカー プロセスがあります。スーパーバイザはタスクをワーカー プロセスに委任します。ワーカー プロセスは、必要なだけエグゼキュータを生成し、タスクを実行します。 Apache Storm は、Nimbus とハイパーバイザー間の通信に内部分散メッセージング システムを使用します。
コンポーネント | 説明 |
---|---|
Nimbus (マスター ノード) | Nimbus は Storm ですマスターノードをクラスター化します。クラスター内の他のすべてのノードはワーカー ノードと呼ばれます。マスター ノードは、すべてのワーカー ノード間でのデータの分散、ワーカー ノードへのタスクの割り当て、および障害の監視を担当します。 |
スーパーバイザー (ワーカー ノード) | 指示に従うノードは スーパーバイザーと呼ばれます。 Supervisor には複数のワーカー プロセスがあり、ニンバスによって割り当てられたタスクを完了するためにワーカー プロセスを管理します。 |
ワーカー プロセス | ワーカー プロセスは、特定のトポロジに関連するタスクを実行します。ワーカー プロセスは、タスク自体を実行するのではなく、エグゼキューターを作成し、それらに特定のタスクの実行を依頼します。ワーカー プロセスには複数のエグゼキュータがあります。 |
Executor | Executor は、ワーカー プロセスによって生成される単一のスレッドです。エグゼキュータは 1 つ以上のタスクを実行しますが、対象となるのは特定のスパウトまたはボルトのみです。 |
タスク | タスクは実際のデータ処理を実行します。つまり注ぎ口かボルトです。 |
ZooKeeper フレームワーク (ZooKeeper フレームワーク) | Apache の ZooKeeper は、それ自身を使用し、自身間で共有データを維持し、強力な機能を持つクラスター (ノード グループ) です。同期技術 調整されたサービス。 Nimbus はステートレスであるため、ZooKeeper に依存してワーカー ノードのステータスを監視します。 ZooKeeper は、スーパーバイザーがニンバスと対話するのに役立ちます。ニンバスとスーパーバイザーのステータスを維持する責任があります。 |
Storm はステートレスです。ステートレスな性質には独自の欠点がありますが、実際には、Storm が可能な限り最良かつ最速の方法でリアルタイム データを処理するのに役立ちます。
ただし、Storm は完全にステートレスではありません。その状態を Apache ZooKeeper に保存します。この状態は Apache ZooKeeper で利用できるため、障害が発生したネットワークを再起動して、中断したところから作業することができます。通常、monit などのサービス監視ツールは Nimbus を監視し、障害が発生した場合には再起動します。
Apache Storm には、Trident トポロジと呼ばれる高度なトポロジもあり、状態の維持機能があり、Pig のような高レベルの API も提供します。これらすべての機能については、次の章で説明します。