Flume - 初識
一、基本架構
Flume-NG 採用三層架構設計:收集(Source)、暫存(channel)和處理(Sink)。
一個event在一個agent中傳輸的順序爲:
Source -> Interceptor -> Selector -> Channel -> Sink Processor -> Sink -> 中心存儲/下一級agent
二、核心概念
- Event: 一條消息或者說是一條數據,具有可選頭信息,在頭信息中可以設置時間戳、主機名稱等信息。
- Source: 數據源,接收或者收集不同形式的數據源。
- Channel: event的臨時緩衝區,source先將event發送到chanel緩存等待sink消費。
- Sink: 從channel獲取event併發送到中心存儲或者下一級agent。
- Agent: 包含source、channel、sink等組件的flume進程。
- Interceptor: event攔截器,根據配置文件在event的header中添加時間戳、主機名稱等信息。
- Selector: event選擇器,event選擇流入channel的方式,flume提供了複製(replicating)和複用(multiplexing)選擇器。
- Sink Processor: event sink處理器,flume提供了故障轉移處理器和負載均衡處理器。
三、組件簡介
3.1 Source
Source用於對接各種數據源,將收集到的事件發送到臨時存儲Channel中。
常用的source類型有:Avro Source、Exec Source、Kafka Source、Taildir Source、Spooling Directory Source等
3.2 Channel
Channel被設計爲Event中轉臨時緩衝區,存儲Source收集並且沒有被Sink讀取的Event,爲平衡Source收集和Sink讀取數據的速度,可視爲Flume內部的消息隊列。Channel線程安全並且具有事務性,支持source寫失敗重複寫和sink讀失敗重複讀等操作。
常用的Channel類型有Memory Channel、File Channel、Kafka Channel等。
3.3 Sink
常用的類型爲 Avro Sink、HDFS Sink、Kafka Sink