Flume基本概念


1         Apache Flume

1.1         概述

Flume是Cloudera提供的一個高可用,高可靠的,分布式的海量日志采集、聚合和傳輸的軟件。

Flume的核心是把數據從數據源(source)收集過來,再將收集到的數據送到指定的目的地(sink)。為了保證輸送的過程一定成功,在送到目的地(sink)之前,會先緩存數據(channel),待數據真正到達目的地(sink)后,flume再刪除自己緩存的數據。

Flume支持定制各類數據發送方,用於收集各類型數據:同時,Flume支持定制各種數據接受放,用於最終存儲數據。一般的采集需求,通過對flume的簡單配置即可實現。針對特殊場景也具備良好的自定義擴展能力。因此,flume可以適用於大部分的日常數據采集場景。

當前Flume有兩個版本。Flume0.9X版本的通常Flume OG(original generation),Flume1.X版本的統稱Flume NG(next generation)。由於Flume NG經過核心組件、核心配置以及代碼架構重構,與Flume OG有很大不同,使用時請注意區分。改動的另一個原因是將Flume納入Apache旗下,Cloudera Flume改名為Apache Flume。

 

1.2         運行機制

Flume日志采集傳輸系統中核心的角色是agent,agent本身是一個java進程,一般運行在日志收集節點,當然也可以運行在數據下沉的節點。Source、Sink、Channel三個組件是Flume運行的核心。

 

 

       每一個agent相當於一個數據傳遞員,關於三個組件的介紹:

       Source:采集源,用於跟數據源對接,以獲取數據;

Sink:下沉地,采集數據的傳送目的,用於往下一級agent傳遞數據或者往最終存儲系統傳遞數據;

Channel:agent內部的數據傳輸通道,用於從source將數據傳遞到sink;

在整個數據的傳輸的過程中,流動的是event,它是Flume內部數據傳輸的最基本的單元。event將傳輸的數據進行封裝。如果是文本文件,通常是一行記錄,event也是事務的基本單位。event從source,流向channel,再到sink,本身為一個字節數組,並可攜帶headers(頭信息)信息。event代表着一個數據的最小完整單元,從外部數據源來,向外部的目的地去。

一個完整的event包括:event headers、event body、event信息,其中event信息就是flume收集到的日記記錄。

 

1.3         Flume采集系統結構圖

1.3.1    簡單結構

單個agent采集數據

 

 

1.3.2    復雜結構

多級agent之間串聯。

我們知道Flume一個很重要的功能就是應用於大數據環境中采集日志信息,那么對於分布式系統就需要用到下面這種復雜結構的Flume采集系統。在每一台服務器上都部署一個agent進程進行數據采集,再通過一個agent進程對所有采集到的數據進行匯總,並下沉到數據存儲系統。

 

 

1.4         官網

http://flume.apache.org/

documentation-> Flume User Guide頁面左邊菜單的Configuration下面我們可以看到Flume Sources、Flume Sinks、Flume Channels。這里所列舉的數據源、下沉地和傳輸通道基本上包含了大數據領域常用的軟件,能滿足大部分的需求,特殊情況下Flume也支持自定義。

由此我們也可以知道,Flume使用起來重點在於采集方案的配置。針對采集需求使用的是什么樣的source、sink和channel,把服務配置好並啟動起來,就可以進行數據采集、數據的傳輸和數據的下沉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM