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も提供します。これらすべての機能については、次の章で説明します。