1. 概述
Flume是一個分佈式、可靠和高可用的海量日誌採集、聚合和傳輸系統。
Flume可以採集多種數據,如:文件、socket數據包、文件夾、Kafka等,還可以將採集到的數據輸出到HDFS、HBase、Hive等多種存儲系統。
[Flume官方網站](http://flume.apache.org/)
有更詳細的介紹。
2. 運行機制
Flume中最核心部分是agent,每個agent都是一個JVM進程。
agent由三個組件組成:
source: 採集組件,用於獲取數據;
sink:下沉組件,用於將數據傳輸至下一級agent或寫入存儲系統;
channel:傳輸通道組件,用於將source採集的數據傳輸至sink;
3. 採集方式
根據實際情況的複雜程度,可以配置多種Flume處理方式:
3.1 單agent
3.2 agent串聯
數據可以由一個agent發往另一個agent,agent位於不同主機時,使用avro類型連接兩agent。
3.3 彙總多個agent
也可以由多個agent採集不同源端數據,彙總至一個agent後寫入某個存儲系統。
3.4 發往多目的地
同一份源端數據,可以通過多個agent傳輸,分別輸入不同目的地。
總結
- Flume主要用於海量日誌傳輸,可靈活配置agent實現多種傳輸方案。
- agent三組件: source、sink、channel。