flume

Flume OG

wKiom1NBTnSTTnPXAAEPdgyl9lw860.jpg

Flume OG主要由上圖幾個組件組成:

Agent、Collector、Master、HDFS


Agent:

   主要用於採集數據,通常是由source和sink兩部分組成。其中Source用於獲取數據,Sink將Source獲取的數據傳輸到Collector。


Collector:

   主要用於彙總多個Agent傳輸的結果數據,將彙總的數據導入後臺的存儲系統,如HDFS,HBase。與Agent類似,它也由Source用於獲取Agent傳輸的數據,Sink將Source獲取的數據傳輸到存儲系統。


Master:

   主要用於管理協調Agent和Collector的配置信息,是整個Flume集羣的控制器,master平衡集羣中各個Collector之間的負載,通知Agent數據流的結果信息,爲了防止單點故障,我們通常藉助ZooKepper管理多個Master節點。


Flume的容錯機制:

   Flume支持兩種容錯的機制

   1、存儲數據到多個Collector

   2、配置備用Collector,當Agent發送數據流到Collector_A,Collector_A掛掉時,數據會發送到備用的Collector_B,如果存儲系統故障時,數據會保存到本地的Collector節點上,在存儲系統恢復後再發送至存儲系統。


Flume NG


wKioL1NBVkTh-eW1AAG8P8268vI270.jpg

Flume NG主要由Event、Client、Agent組成

Event:

   它是Flume數據傳輸的基本單元,它貫穿Flume的整個流程中。它由可選的Header和一個裝有數據的ByteArray組成。Header中是由一個個KeyValue對的數據構成的,大小不固定可以擴展。

Client:

   主要用於將原始的Log文件包裝爲一個或多個Event,發送到一個或多個Agent中。

Agent:

   主要用於傳輸數據,由Source、Channel、Sink和其他組件組成。Agent中的各個組件將Event從一個Agent傳輸到下一個Agent,一直傳輸到存儲系統中。它是Flume的核心,我們可以通過設計不同的Agent來完成各種不同情況的日誌收集。Flume用於配置、監控各個Agent。


Agent中的各個組件:

   Source:負責接收Event,並將Event放到一個或多個Channel

   Channel:在Source和Sink之間,用於緩存Event,當Sink成功後刪除緩存的Event,一個Channel可以服務與多個Source和Sink。(Channel可以有多種實現,如:memory、file、JDBC)

   Sink:負責針Event傳輸到下一個Source或存儲系統,一個Sink必須對應一個Channel

   Interceptor:作用於Source,按照預設的順序在必要地方裝飾和過濾Event

   ChannelSelector:作用於Source,通過配置可以從所有Channel中選擇一個或多個Channel

   SinkProcessor:從個Sink可以構成一個SinkGroup,它可以通過Group中所有Sink實現負載均衡。

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