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