天天看點

Flume開發中常用元件source,channel,sink等配置

       實際開發中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.