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