FLume 是通過agent(代理)為最小的獨立運作機關,agent包括Source,Channel,Sink
Source:
1)NetCat Source
使用TCP和UDP兩種協定方式,使用方法基本相同,通過監聽指定的IP和端口來傳輸資料,它會将監聽到的每一行資料轉化成一個Event寫入到Channel中
2)Avro Source(讀音類似于[ævrə]) (https://blog.csdn.net/zhouleilei/article/details/8537831)
Avro Source可以定制avro-client發送一個指定的檔案給Flume agent,Avro源使用Avro RPC機制,Flume主要的RPC Source也是 Avro Source,它使用Netty-Avro inter-process的通信(IPC)協定來通信,是以可以用java或JVM語言發送資料到Avro Source端。
3)Exec類型的Source
a1.sources.r1.command=tail -f /tmp/err.log 要執行的指令
4)Taildir Source
監控指定的多個檔案,一旦檔案内有新寫入的資料,就會将其寫入到指定的sink内,本來源可靠性高,不會丢失資料,建議使用
5)Spooling Directory類型的 Source:
指定的檔案加入到“自動搜集”目錄中。flume會持續監聽這個目錄,把檔案當做source來處理
6)Kafka Source
支援從Kafka指定的topic中讀取資料
7)自定義Source(繼承封裝)
Channel:
1)Memory Channel(記憶體Channels)
events存儲在配置最大大小的記憶體隊列中。對于流量較高和由于agent故障而準備丢失資料的流程來說,這是一個理想的選擇。
2)file channel(磁盤持久化)
File Channel是一個持久化的隧道(channel),資料安全并且隻要磁盤空間足夠,它就可以将資料存儲到磁盤上。
3) JDBC Channel(資料庫)
events存儲在持久化存儲資料庫中
4)Kafka Channel
events存儲在Kafka叢集中。Kafka提供高可用性和高可靠性,是以當agent或者kafka broker 崩潰時,events能馬上被其他sinks可用。
5)自定義channel
Sink:
1)File Roll
存儲于本地系統中。
2)Avro
是實作多級流動、扇出流(1到多) 扇入流(多到1) 的基礎。
3)HDFS
此Sink将事件寫入到Hadoop分布式檔案系統HDFS中目前它支援建立文本檔案和序,列化檔案。
攔截器:
設定在source和channel之間。source接收到的時間,在寫入channel之前,攔截器都可以進行轉換或者删除這些事件。每個攔截器隻處理同一個source接收到的事件。可以自定義攔截器。
1)Timestamp (時間戳攔截器)
2)Host (主機攔截器)
3)Static(靜态攔截器)
4)REGEX_FILTER (正則過濾攔截器)
5)Regex_Extractor(正則比對攔截器)
6)UUID(UUID攔截器)
7)自定義攔截器(java)