Apache-flume-architecture
Apache Flume-アーキテクチャ
次の図は、Flumeの基本アーキテクチャを示しています。 図に示すように、データジェネレータ(Facebook、Twitterなど)は、それらで実行されている個々のFlume エージェント*によって収集されるデータを生成します。 その後、*データコレクター(エージェントでもあります)がエージェントからデータを収集し、集約され、HDFSやHBaseなどの中央ストアにプッシュされます。
水路イベント
イベント*は *Flume 内で転送されるデータの基本単位です。 これには、オプションのヘッダーを伴ってソースから宛先に転送されるバイト配列のペイロードが含まれています。 典型的なFlumeイベントは次の構造を持つでしょう-
Flumeエージェント
エージェント*は、Flumeの独立したデーモンプロセス(JVM)です。 クライアントまたは他のエージェントからデータ(イベント)を受信し、次の宛先(シンクまたはエージェント)に転送します。 Flumeには複数のエージェントが含まれる場合があります。 次の図は *Flume Agent を表しています
図に示すように、Flume Agentには、 source 、 channel 、および sink という3つの主要コンポーネントが含まれています。
ソース
- ソース*は、データジェネレーターからデータを受信し、Flumeイベントの形式で1つ以上のチャネルに転送するエージェントのコンポーネントです。
Apache Flumeはいくつかのタイプのソースをサポートし、各ソースは指定されたデータジェネレーターからイベントを受け取ります。
例-Avroソース、Thriftソース、twitter 1%ソースなど
チャネル
- チャネル*は、ソースからイベントを受信し、シンクによって消費されるまでそれらをバッファリングする一時ストアです。 ソースとシンクの間のブリッジとして機能します。
これらのチャネルは完全にトランザクショナルであり、任意の数のソースおよびシンクと連携できます。
例-JDBCチャネル、ファイルシステムチャネル、メモリチャネルなど
Sink
- シンク*は、HBaseやHDFSなどの中央ストアにデータを保存します。 チャネルからのデータ(イベント)を消費し、宛先に配信します。 シンクの宛先は、別のエージェントまたは中央ストアである可能性があります。
例-HDFSシンク
注-flumeエージェントは、複数のソース、シンク、およびチャネルを持つことができます。 このチュートリアルのFlume構成の章に、サポートされているすべてのソース、シンク、チャネルをリストしました。
Flumeエージェントの追加コンポーネント
上記で説明したのは、エージェントの基本的なコンポーネントです。 これに加えて、イベントをデータジェネレーターから中央ストアに転送する際に重要な役割を果たすコンポーネントがいくつかあります。
インターセプター
インターセプターは、ソースとチャネル間で転送される水路イベントを変更/検査するために使用されます。
チャンネルセレクター
これらは、複数のチャネルの場合にデータを転送するために選択されるチャネルを決定するために使用されます。 チャネルセレクタには2種類あります-
- デフォルトチャネルセレクタ-これらは、各チャネルのすべてのイベントを複製するチャネルセレクタの複製とも呼ばれます。
- 多重化チャネルセレクタ-これらは、イベントのヘッダー内のアドレスに基づいてイベントを送信するチャネルを決定します。
シンクプロセッサー
これらは、選択したシンクグループから特定のシンクを呼び出すために使用されます。 これらは、シンクのフェールオーバーパスを作成したり、チャネルから複数のシンクにわたってイベントをロードバランスしたりするために使用されます。