大數據中海量日誌採集、聚合和傳輸系統flume核心思想架構整理

4、功能可擴展性

用戶可以根據需要添加自己的agent,collector或者storage。此外,Flume自帶了很多組件,包括各種agent(file, syslog等),collector和storage(file,HDFS等)。

Flume OG 與 Flume NG 的對比

1、Flume OG

Flume OG:Flume original generation 即Flume 0.9.x版本,它由agent、collector、master等組件構成。

2、Flume NG

Flume NG:Flume next generation ,即Flume 1.x版本,它由Agent、Client等組件構成。

3、Flume NG版本的優點

1)相對於Flume OG版本,Flume NG版本代碼比較簡單。

2)相對於Flume OG版本,Flume NG版本架構簡潔。

接下來我們重點講解 Flume NG。

Flume NG基本架構

Flume NG是一個分佈式、可靠、可用的系統,它能夠將不同數據源的海量日誌數據進行高效收集、聚合、移動,最後存儲到一箇中心化數據存儲系統中。由原來的Flume OG到現在的Flume NG,進行了架構重構,並且現在NG版本完全不兼容原來的OG版本。經過架構重構後,Flume NG更像是一個輕量的小工具,非常簡單,容易適應各種方式日誌收集,並支持failover和負載均衡。

Flume NG 的架構圖如下所示。

大數據中海量日誌採集、聚合和傳輸系統flume核心思想架構整理

Flume NG核心概念

Flume的架構主要有以下幾個核心概念:

1、Event:一個數據單元,帶有一個可選的消息頭。

2、Flow:Event從源點到達目的點的遷移的抽象。

3、Client:操作位於源點處的Event,將其發送到Flume Agent。

4、Agent:一個獨立的Flume進程,包含組件Source、Channel、Sink。

5、Source:用來消費傳遞到該組件的Event。

6、Channel:中轉Event的一個臨時存儲,保存有Source組件傳遞過來的Event。

7、Sink:從Channel中讀取並移除Event,將Event傳遞到Flow Pipeline中的下一個Agent(如果有的話)

下面我們分別介紹以上幾個核心的概念。

Event

1、Event 是Flume數據傳輸的基本單元。

2、Flume 以事件的形式將數據從源頭傳輸到最終的目的。

3、Event 由可選的header和載有數據的一個byte array構成。

1)載有的數據對Flume是不透明的。

2)Header 是容納了key-value字符串對的無序集合,key在集合內是唯一的。

3)Header 可以在上下文路由中使用擴展。

Client

1、Client 是一個將原始log包裝成events並且發送它們到一個或者多個agent的實體。

2、Client 在Flume的拓撲結構中不是必須的,它的目的是從數據源系統中解耦Flume

Agent

1、一個Agent包含Source、Channel、Sink和其他組件。

2、它利用這些組件將events從一個節點傳輸到另一個節點或最終目的地。

3、agent是Flume流的基礎部分。

4、Flume 為這些組件提供了配置、生命週期管理、監控支持。

Agent之Source

大數據中海量日誌採集、聚合和傳輸系統flume核心思想架構整理

1、Source負責接收event或通過特殊機制產生event,並將events批量的放到一個或多個Channel。

2、Source包含event驅動和輪詢兩種類型。

3、Source 有不同的類型。

1)與系統集成的Source:Syslog,NetCat。

2)自動生成事件的Source:Exec

3)用於Agent和Agent之間的通信的IPC Source:Avro、Thrift。

4、Source必須至少和一個Channel關聯。

Agent之Channel與Sink

大數據中海量日誌採集、聚合和傳輸系統flume核心思想架構整理

Agent之Channel

1、Channel位於Source和Sink之間,用於緩存進來的event。

2、當Sink成功的將event發送到下一跳的Channel或最終目的地,event才Channel中移除。

3、不同的Channel提供的持久化水平也是不一樣的:

1)Memory Channel:volatile。

2)File Channel:基於WAL實現。

3)JDBC Channel:基於嵌入Database實現。

4、Channel支持事物,提供較弱的順序保證。

5、Channel可以和任何數量的Source和Sink工作。

Agent之Sink

1、Sink負責將event傳輸到下一跳或最終目的,成功完成後將event從Channel移除。

2、有不同類型的Sink:

1)存儲event到最終目的的終端Sink。比如HDFS,HBase。

2)自動消耗的Sink。比如:Null Sink。

3)用於Agent間通信的IPC sink:Avro。

3、Sink必須作用於一個確切的Channel。

最後上一個圖

大數據中海量日誌採集、聚合和傳輸系統flume核心思想架構整理

更多的文章,我會持續更新


分享到:


相關文章: