flume 幾個比較有用的source、sink和decorator

Source catalog:

1.Console 控制檯輸出,可以帶輸出內容格式的參數

比如console(“raw”), console(“json”)

2.text("filename"[, format])

一次讀取文件內容,每一個換行做爲一個事件。

3.tail("filename"[,startFromEnd=false]{,delim="regex", delimMode="exclude|prev|next"})

   讀取文件尾部內容跟linuxtail類似。

   Filename:讀取的文件名,

   StartFromEnd 每次重讀時,是否重頭開始讀。默認false每次重頭開始重讀,

   Delim 是分割參數,

   DelimMode分隔符數據屬於哪一部分的指定。

4.tailDir("dirname"[,fileregex=".*"[, startFromEnd=false[,recurseDepth=0]]]{,delim="regex",delimMode="exclude|prev|next"})

對一個目錄下面有改動文件的事件發送

Dirname:目錄名

Fileregex:文件名正則表達式匹配,需要符合java中正則表達式規則

StartFromeEnd tail中的參數一樣。

RecurseDepth :指定目錄下是否遞歸對其子目錄中文件的監控。指定遞歸層數。

其他剩餘參數跟tail中一致。

Sinks catalog

CollectorTier Event Sinks

1.   collectorSink("fsdir","fsfileprefix"[, rollmillis[, format]])

收集發送過來的事件。

Fsdir:目錄,

Fsfileprefix:文件前綴,

Rollmillis:對於hdfs來就是文件的打開是關閉這段時間

Format是輸出文件格式

AgentTier Event Sinks

 

1agentSink[("machine"[,port])]

Defaults to agentE2ESink

2agentE2ESink[("machine"[,port])]

先講event內容寫入文件防止在緩衝丟失和點對點確認的數據傳輸

MachinecollectorSourceip

Port:collectorSource的端口

3agentDFOSink[("machine"[,port])]

當連接斷開時,會把event寫到本地,並且會不斷重試發送event給對方,把之前未發送成功的event再次發送。

4agentBESink[("machine"[,port])] 

BestEffort Agent sink,最有效率的agent sink,顧名思義,就是隻管發送,不管有沒有發送成功。就可能存在丟失event的情況存在。

1、     agentE2EChain("m1[:_p1_]"[, "m2[:_p2_]"[,…]])

有多個collector可供選擇發送。如果第一丟失連接了,就會向第二發送event,以此類推。並且會不定期回來查看原來沒反應的collector是否已經恢復了,如果恢復了,就會跟原來的節點交互了。發送機制跟agentE2ESink一樣

2、     agentDFOChain("m1[:_p1_]"[, "m2[:_p2_]"[,…]])

3、 agentBEChain("m1[:_p1_]"[, "m2[:_p2_]"[,…]])

上面兩個跟6類似

autoE2EChainautoDFOChainautoBEChain,自動的會想master要可以連接的collector

裝飾器catalog

1、writeAhead sink發送前先寫入文件後,在本地緩衝機制,可讓接收和發送分別在不同的線程中進行。

2、ackedWriteAhead[(maxmillis)]

3、diskFailover[(maxmillis)]

如果event發送失敗,就在本地磁盤緩存,然後每隔maxmillis時間去重試。

4、ackInjector注入ack確認操作。

5、ackChecker:計算髮送組的checksum值,插入到ackInjector

6、lazyOpen:只在條用append的時候,纔會做真正的openclosed操作

 

7、 format("pattern"):改變輸出格式,具體格式有pattern參數指定。對於需要做checksumevents來說由於改變了數據格式將導致checksum的值也不會改變。從而導致消息的丟失。這個裝飾器一般用在對消息可靠性要求不是很高,或者reports中。

8、 batch(n,maxlatency)緩存nevents然後統一發送。如果等待時間操作maxlatency,即使未有nevents也會發送。

9、 unbatch:對於上面被batch操作過的events,同步unbatch來拆分開。

10、    gzip:將events事件序列化後壓縮

11、    gunzip:對gzip壓縮過的events,解壓

12、     intervalSampler(n)每隔nevents發送一次,算是一個優化手段,特別是通過網絡傳輸時。

13、     probSampler(p):通過概率p來做決定是否將events接着往下發送

14、     reservoirSampler(k):對接收到events根據發送時的順序重新來組織。

15、     delay(ms)對要發送的events內容延遲ms

16、    choke[(choke-id)]:限制發送速度

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章