flume組件匯總 source、sink、channel


Flume Source

Source類型 說明
Avro Source 支持Avro協議(實際上是Avro RPC),內置支持
Thrift Source 支持Thrift協議,內置支持
Exec Source 基於Unix的command在標准輸出上生產數據
JMS Source 從JMS系統(消息、主題)中讀取數據,ActiveMQ已經測試過
Spooling Directory Source 監控指定目錄內數據變更
Twitter 1% firehose Source 通過API持續下載Twitter數據,試驗性質
Netcat Source 監控某個端口,將流經端口的每一個文本行數據作為Event輸入
Sequence Generator Source 序列生成器數據源,生產序列數據

Syslog Sources

syslogtcp

multiport_syslogtcp

syslogudp

讀取syslog數據,產生Event,支持UDP和TCP兩種協議
HTTP Source 基於HTTP POST或GET方式的數據源,支持JSON、BLOB表示形式
Legacy Sources
兼容老的Flume OG中Source(0.9.x版本)
Avro Legacy Source

Thrift Legacy Source

Scribe Source

Custom Source
自定義Source

Flume Sink

Sink類型 說明
HDFS Sink 數據寫入HDFS
Logger Sink 數據寫入日志文件
Avro Sink 數據被轉換成Avro Event,然后發送到配置的RPC端口上
Thrift Sink 數據被轉換成Thrift Event,然后發送到配置的RPC端口上
IRC Sink 數據在IRC上進行回放
File Roll Sink 存儲數據到本地文件系統
Null Sink 丟棄到所有數據
HBase Sink 數據寫入HBase數據庫
Morphline Solr Sink 數據發送到Solr搜索服務器(集群)
ElasticSearch Sink 數據發送到Elastic Search搜索服務器(集群)
Kite Dataset Sink 寫數據到Kite Dataset,試驗性質的
Custom Sink 自定義Sink實現

Flume Channel

Channel類型 說明
Memory Channel Event數據存儲在內存中
JDBC Channel Event數據存儲在持久化存儲中,當前Flume Channel內置支持Derby
File Channel Event數據存儲在磁盤文件中
Spillable Memory Channel Event數據存儲在內存中和磁盤上,當內存隊列滿了,會持久化到磁盤文件(當前試驗性的,不建議生產環境使用)
Pseudo Transaction Channel 測試用途
Custom Channel 自定義Channel實現

Channel Selector

Sink Processor

Event Serializer

Event Deserializers

在source組件上指定,反序列化,將輸入(文件、流)解析成event的方式,

Deserializer類型 說明
LINE 默認值,將文本輸入的每行轉換成一個event
AVRO 讀取avro文件,將其中的每條avro記錄轉換成一個event,每個event都附帶着模式信息
BlobDeserializer 將整個二進制大數據轉換成一個evnt,通常一個BLOB就是一個文件,比如PDF、JPG

比如:

1
2
a1.sources=s1
a1.sources.s1.deserializer=LINE

注意:

LINE有個設置每行字符個數的屬性:deserializer.maxLineLength,默認是2048,大於這個字符數的行將被截斷。

BlobDeserializer有個設置文件大小的屬性:deserializer.maxBlobLength默認是100000000(大約95M),大於這個值的文件將被拆分成多個文件。

Event Serializers

在sink組將上指定,序列化,將event對象轉換成文件的方式。

Serializer類型 說明
TEXT(Body Text Serializer) 默認值,將event中body里的數據不做改變的轉換成輸出流,event的header將被忽略
AVRO_EVENT(Avro Event Serializer) 將event轉換成avro文件
BlobDeserializer 將整個二進制大數據轉換成一個evnt,通常一個BLOB就是一個文件,比如PDF、JPG

Interceptor

攔截器可以修改或刪除event。

攔截器可以組成攔截器鏈,中間用空格分隔,攔截器的配置順序即是它們的執行順序。

Handler類型 說明
Timestamp Interceptor
向event header中添加了timestamp變量,值是時間戳
Host Interceptor
向event header中添加了host變量,可以通%{host}引用(比如在HDFS sink中的路徑占位符)
Static Interceptor
配置一個靜態的值到event header里,多個靜態值需要配多個static interceptor
UUID Interceptor
向event header里添加變量id,值是隨機生成的uuid,可以用這個唯一標識一個event
Morphline Interceptor
使用morphline配置文件過濾event。
Regex Filtering Interceptor
使用正則表達式過濾(include或exclude)event。
Regex Extractor Interceptor 使用正則表達式來向header中添加key、value。

配置實例:

1
2
3
4
5
6
a1.sources=s1
...
a1.sources.s1.interceptors=i1 i2
a1.sources.s1.interceptors.i1.type=host
a1.sources.s1.interceptors.i1.hostHeader=host
a1.sources.s1.interceptors.i2.type=timestamp

type可以是全限定類名或者是別名










免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM