擴充Flume按照Time和Size對日誌進行hdfs歸檔

來源:互聯網
上載者:User
    Flume的架構基本agent-->collect-->storage的架構,agent主要負責日誌的產生,並把日誌傳給collector端,collect負責把agent發送的日誌收集起來,發送給storage儲存,storage負責的儲存;其中agent和collect本身都是source,sink架構,所謂source、sink,類似產生者和消費者的架構,他們之間通過queue傳輸,解耦。    實際環境中有這樣的需求,通過在多個agent端tail日誌,發送給collector,collector再把資料收集,統一發送給HDFS儲存起來,當HDFS檔案大小超過一定的大小或者超過在規定的時間間隔會產生一個檔案。    Flume 實現了兩個Trigger,分別為SizeTriger(在調用HDFS輸出資料流寫的同時,count該流已經寫入的大小總和,若超過一定大小,則建立新的檔案和輸出資料流,寫入操作指向新的輸出資料流,同時close以前的輸出資料流)和TimeTriger(開啟定時器,當到達該點時,自動建立新的檔案和輸出資料流,新的寫入重新導向到該流中,同時close以前的輸出資料流)。   目前在Flume的配置中只支援TimeTrigger, collectorSink( "fsdir","fsfileprefix",rollmillis),但是在代碼中已經實現了按照檔案大小進行復原,同時也實現了OrTrigger實現多個trigger的混合機制。對collectot定義如下格式 collectorSink( "fsdir","fsfileprefix",rollmillis,maxsize),其中maxsize是HDFS檔案的最大大小(M)如 exec config collector 'collectorSource(35862)' 'collectorSink("hdfs://hostname:9100/syslog","log",300000,200)' CollectorSink修改 public static SinkBuilder hdfsBuilder(),支援對maxsize檔案大小參數的校正。
增加建構函式,在建構函式中,建立OrTrigger並傳入RollSink支援對檔案大小和時間間隔Trigger的支援。
CollectorSink(Context ctx, final String snkSpec, final long millis,final long size, final Tagger tagger, long checkmillis,AckListener ackDest) 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.