天天看點

Flume元件簡介

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)