2021-05-12 14:32:11
Flume紀錄檔採集系統
1.簡介
Flume是Cloudera提供的一個高可用、高可靠、分散式的海量紀錄檔採集、聚合和傳輸的系統.
Flume支援在紀錄檔系統中客製化各類資料傳送方用於收集資料,同時Flume提供對資料進行簡單的處理並寫到各種資料接受方的能力.
當前Flume有兩個版本,Flume 0.9X版本的統稱Flume-og,Flume1.X版本的統稱Flume-ng(由於Flume-ng經過重大重構與Flume-og有很大不同,使用時請注意區分)
兩個版本的區別
Flume-og採用了多Master的方式,為了保證設定資料的一致性,Flume引入了ZooKeeper用於儲存組態檔,在組態檔發生變化時,ZooKeeper可以通知Flume Master節點,Flume Master間使用gossip協定同步資料.
Flume-og 中讀入執行緒同樣做寫操作,如果寫出慢的話將阻塞 Flume 接收資料的能力.
Flume-ng最明顯的改動就是取消了集中管理設定的 Master 和 Zookeeper,變為一個純粹的傳輸工具.
Flume-ng讀入資料和寫出資料現在由不同的工作執行緒處理(Runner),這種非同步的設計使讀入執行緒可以順暢的工作而無需關注下游的任何問題.
Flume的優勢
1.Flume可以將應用產生的資料儲存到任何集中記憶體中,比如HDFS,HBase.
2.當收集資料的速度超過寫入資料的時候,此時Flume會在資料生產者和資料收容器間做出調整,保證其能夠在兩者之間提供平穩的資料.
3.Flume的管道是基於事務的,保證了資料在傳送和接收時的一致性.
Flume的應用場景
1.Flume可以高效的將多個網站伺服器的紀錄檔資訊存入HDFS/HBase中.
2..除了紀錄檔資訊以外,Flume也可以用來收集規模宏大的社群網路節點事件資料(比如facebook、twitter、亞馬遜)
*本文只闡述Flume-ng版本的元件及使用.
2.Flume的結構模型
Flume由Source、Channel,Sink三大元件組成.
Source:從Client上收集資料並對資料進行格式化,以Event(事件)的形式傳遞給單個或多個Channel.
Flume的資料流由事件(Event)充當,事件是Flume的基本資料單位,事件攜帶紀錄檔資料(位元組陣列形式,包含頭資訊).
Channel:短暫的儲存容器,將從Source接收到的Event進行快取直到被Sink消費掉,Channel是Source和Sink之間的橋樑,Channal是一個完整的事務,能保證了資料在收發時的一致性,並且一個Channel可以同時和任意數量的Source和Sink建立連線.
Sink:從Channel中消費資料(Event)並傳遞到儲存容器(Hbase、HDFS)或其他的Source中.
Flume以Agent為最小的獨立執行單元,Agent依賴於JVM,一個Agent的執行就伴隨一個JVM範例的產生.
相關文章