實際開發中Flume中常用的source源,sink,channel,intercepertor等介紹,而實際上關于agent代理中設定選項有很多,具體要到官網去檢視。
元件
使用介紹
source
資料源
Avro
監聽由Avro sink 或Flume SDK 通過Avro RPC發送的事件所抵達的端口
Exec
運作一個Unix指令(例如 tail -F /path/to/file),并且把從标準輸出上讀取的行轉化為事件。但是要注意,此source不一定能保證把事件傳送到channel,更好的選擇可以參考spooling directory source 或者Flume SDK.
HTTP
監聽一個端口,并且使用可插拔句柄,比如JSON處理程式或者二進制資料處理程式,把HTTP請求轉換成事件
JMS
讀取來自JMS Queue或者Topic的消息并将其轉換成事件
Spooling directory
/spooldir
按行讀取儲存在緩沖目錄中的檔案,并将其轉換為事件。
Netcat
監聽一個端口,并把每行文本轉換為一個事件
Syslog
從日志中讀取行,并将其轉換為事件
Thrift
監聽由Thrift sink或Flume SDK通過Thrift RPC發送的事件所抵達的視窗
Squence genetartor
依據增量計數器來生成事件,主要用來測試用
kafka
監聽kafka的Topic,當成事件
sink
目地
HDFS
以文本,序列化檔案,Avro或定制格式寫入到HDFS中。
HBASE
使用某種序列化工具将資料寫入到HBASE中
Logger
使用SLF4J記錄INFO級别的事件,主要用來測試
将事件寫入到kafka消息緩存對列
Elasticcsearch
使用Logstash格式将事件寫入到Elasticsearch叢集中
NULL
丢棄所有事件
通過Avro RPC發送事件到一個Avro source群中
File roll
将事件寫入到本地檔案系統
Hive
将事件按固定的格式導入到hive表中或者對應的分區裡。
IRC
将事件發送給IRC通道
channel
通道
file
将事件存儲在一個本地檔案系統上的事務日志中。這種類型的channel具有持久性:隻要事件被寫入channel,即使使用了代理,代理重新啟動,事件也不會丢失。agent1.channnels.channel1.type=file
memory
将事件緩存到記憶體中,是以不具有持久性存儲能力。是以采用memory channel時,如果代理重新啟動,事件就會丢失。在有些時候這種情況允許。和file channel相比,memory channel 速度快,吞吐量較高
agent1.channnels.channel1.type=memory
jdbc
将事件存儲到資料庫中。
攔截器
interce-ptor
Timestamp
給特定source傳遞過來的事件加一個時間戳header.其中包含的是代理處理事件的時間,以ms為機關。具體參考部落格Flume攔截器那篇
agent1.sources.souce1.interceptors = interceptor1
agent1.sources.source1.interceptors.interceptor1.type = timestamp。
UUID
在所有的事件上設定一個ID header,它是一個全局的唯一辨別符,對将來删除重複資料有用。
agent1.sources.source1.interceptors.interceptor1.type
=
org.apache.flume.sink.solr.morphline.UUIDInterceptor$Builder
static
将所有的事件上設定一個固定的header及其值。具體參考官網
Host
将所有事件上設定一個包含代理主機名或IP位址的主機header.