Apache Flume は、分散型で信頼性が高く、高可用性 (HA) を備えたシステムで、さまざまなデータソースから大量のログデータを効率的に収集、集約し、中央データストアに移動します。
シナリオ
Flume は、ログ収集に最も一般的に使用されています。カスタムのソースを介して、他の種類のデータを転送することもできます。
Flume は、Flink、Spark Streaming、Storm などのリアルタイムコンピューティングプラットフォームや、MapReduce (MR)、Hive、Presto などのオフラインコンピューティングプラットフォームにデータを送信します。Flume は、Hadoop Distributed File System (HDFS)、OSS、Kafka、Elasticsearch などのストレージシステムにデータを直接送信することもできます。これにより、後続の分析やトラフィックスクラビングのためにデータが準備されます。
アーキテクチャ
Flume エージェントは Flume のインスタンスです。これは、プロデューサーからコンシューマーへのイベントのデータストリームを制御する Java 仮想マシン (JVM) プロセスです。Flume エージェントは、ソース、チャネル、およびシンクで構成されています。1 つのソースは複数のチャネルに書き込むことができ、複数のシンクが単一のチャネルから読み取ることができます。
用語
|
名前 |
説明 |
|
イベント |
イベントは、Flume エージェントを通過するデータの基本単位です。イベントは、オプションのヘッダーマップとデータを含むバイト配列で構成されています。 以下に例を示します:
|
|
ソース |
ソースはデータコレクターです。外部データソースからデータを収集し、バッチで 1 つ以上のチャネルに送信します。 一般的なソースは、次のとおりです:
|
|
チャネル |
ソースとシンクの間のバッファーキューとして機能します。 一般的なチャネルは、次のとおりです:
|
|
シンク |
シンクはチャネルからイベントを取得し、トランザクションで外部ストレージにコミットします。トランザクションが正常にコミットされると、イベントはチャネルから削除されます。 一般的なシンクは、次のとおりです:
|