Apache Flume是一個分布式、可靠和高可用的系統,可以從大量不同的數據源有效地收集、聚合和移動日志數據,從而集中式的存儲數據。
使用場景
Flume使用最多的場景是日志收集,也可以通過定制Source來傳輸其他不同類型的數據。
Flume最終會將數據落地到實時計算平臺(例如Flink、Spark Streaming和Storm)、離線計算平臺上(例如MR、Hive和Presto),也可僅落地到數據存儲系統中(例如HDFS、OSS、Kafka和Elasticsearch),為后續分析數據和清洗數據做準備。
架構
Flume Agent是一個Flume的實例,本質是一個JVM進程,控制Event數據流從生產者傳輸到消費者。一個Flume Agent由Source、Channel、Sink組成。其中,Source和Channel可以是一對多的關系,Channel和Sink也可以是一對多的關系。
基本概念
名稱 | 描述 |
---|---|
Event | 是數據流通過Flume Agent的基本單位。Event由一個可選的Header字典和一個裝載數據的字節數組組成。
示例如下。
|
Source | 是數據源收集器,從外部數據源收集數據,并批量發送到一個或多個Channel中。
常見Source如下:
|
Channel | 是Source和Sink之間的緩沖隊列。
常見Channel如下:
|
Sink | 從Channel中獲取Event,并將以事務的形式Commit到外部存儲中。一旦事務Commit成功,該Event會從Channel中移除。
常見Sink如下:
|