溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Flume NG 學(xué)習(xí)筆記(一)簡介

發(fā)布時(shí)間:2020-07-23 11:51:28 來源:網(wǎng)絡(luò) 閱讀:1118 作者:jackwxh 欄目:開發(fā)技術(shù)

一、簡介

Flume是一個(gè)分布式、可靠、高可用的海量日志聚合系統(tǒng),支持在系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)的簡單處理,并寫到各種數(shù)據(jù)接收方的能力。

Flume在0.9.x and 1.x之間有較大的架構(gòu)調(diào)整,1.x版本之后的改稱Flume NG(next generation),0.9.x的稱為Flume OG(originalgeneration)。

對(duì)于OG版本, Flume NG (1.x.x)的主要變化如下:

1、sources和sinks 使用channels進(jìn)行鏈接

2、兩個(gè)主要channel 。1) in-memorychannel  非持久性支持,速度快。2)JDBC-based channel 持久性支持。

3、不再區(qū)分邏輯和物理node,所有物理節(jié)點(diǎn)統(tǒng)稱為 “agents”,每個(gè)agents 都能運(yùn)行0個(gè)或多個(gè)sources 和sinks

4、不再需要master節(jié)點(diǎn)和對(duì)zookeeper的依賴,配置文件簡單化。

5、插件化,一部分面對(duì)用戶,工具或系統(tǒng)開發(fā)人員。

6、使用Thrift、Avro Flume sources 可以從Flume0.9.4 發(fā)送 events  到Flume 1.x

下圖為Flume體系架構(gòu)

Flume NG 學(xué)習(xí)筆記(一)簡介

其中相關(guān)組件如下:

組件

功能

Agent

使用JVM 運(yùn)行Flume。每臺(tái)機(jī)器運(yùn)行一個(gè)agent,但是可以在一個(gè)agent中包含多個(gè)sources和sinks。

Client

生產(chǎn)數(shù)據(jù),運(yùn)行在一個(gè)獨(dú)立的線程。

Source

從Client收集數(shù)據(jù),傳遞給Channel。

Sink

從Channel收集數(shù)據(jù),運(yùn)行在一個(gè)獨(dú)立線程。

Channel

連接 sources 和 sinks ,這個(gè)有點(diǎn)像一個(gè)隊(duì)列。

Events

可以是日志記錄、 avro 對(duì)象等。

 

Flume架構(gòu)整體上看就是 source-->channel-->sink 的三層架構(gòu),類似生成者和消費(fèi)者的架構(gòu),他們之間通過channel傳輸,解耦。

Flume以agent為最小的獨(dú)立運(yùn)行單位。一個(gè)agent就是一個(gè)JVM。單agent由Source、Sink和Channel三大組件構(gòu)成,注:運(yùn)行Flume時(shí),機(jī)器必須安裝裝JDK6.0以上的版本

事件是Flume的基本數(shù)據(jù)單位,它攜帶日志數(shù)據(jù)(字節(jié)數(shù)組形式)并且攜帶有頭信息,這些Event由Agent外數(shù)據(jù)源生成

當(dāng)Source捕獲事件后會(huì)進(jìn)行特定的格式化,然后Source會(huì)把事件推入(單個(gè)或多個(gè))Channel中。你可以把Channel看作是一個(gè)緩沖區(qū),它將保存事件直到Sink處理完該事件。Sink負(fù)責(zé)持久化日志或者把事件推向另一個(gè)Source。

Flume支持用戶建立多級(jí)流,也就是說,多個(gè)agent可以協(xié)同工作


 Flume NG 學(xué)習(xí)筆記(一)簡介

二、Flume Source

FlumeSource :完成對(duì)日志數(shù)據(jù)的收集,分成transtion 和event 打入到channel之中。

Flume提供了各種source的實(shí)現(xiàn),包括Avro Source、Exce Source、Spooling Directory Source、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source,etc。

對(duì)現(xiàn)有程序改動(dòng)最小的使用方式是使用是直接讀取程序原來記錄的日志文件,基本可以實(shí)現(xiàn)無縫接入,不需要對(duì)現(xiàn)有程序進(jìn)行任何改動(dòng)。直接讀取文件Source,有兩種方式:

1、Exec Source 以運(yùn)行Linux命令的方式,持續(xù)的輸出最新的數(shù)據(jù),如tail -F 文件名指令,在這種方式下,取的文件名必須是指定的。

ExecSource 雖然支持實(shí)時(shí)數(shù)據(jù),但是在flume不運(yùn)行和腳本錯(cuò)誤時(shí),會(huì)丟數(shù)據(jù),也不支持?jǐn)帱c(diǎn)續(xù)傳功能。因?yàn)闆]有記錄上次文件讀到的位置,從而沒辦法知道,下次再讀時(shí),從什么地方開始讀。特別是在日志文件一直在增加的時(shí)候。flume的source掛了。等flume的source再次開啟的這段時(shí)間內(nèi),增加的日志內(nèi)容,就沒辦法被source讀取到了。不過flume有一個(gè)execStream的擴(kuò)展,可以自己寫一個(gè)監(jiān)控日志增加情況,把增加的日志,通過自己寫的工具把增加的內(nèi)容,傳送給flume的node。再傳送給sink的node。要是能在tail類的source中能支持,在node掛掉這段時(shí)間的內(nèi)容,等下次node開啟后在繼續(xù)傳送,那就更完美了。

 

2、Spool Source是監(jiān)測配置的目錄下新增的文件,并將文件中的數(shù)據(jù)讀取出來。其中,SpoolSource有2個(gè)注意地方,第一個(gè)是拷貝到spool目錄下的文件不可以再打開編輯,第二個(gè)是spool目錄下不可包含相應(yīng)的子目錄。

SpoolSource在實(shí)際使用的過程中,可以結(jié)合log4j使用,使用log4j的時(shí)候,將log4j的文件分割機(jī)制設(shè)為1分鐘一次,將文件拷貝到spool的監(jiān)控目錄。 log4j有一個(gè)TimeRolling的插件,可以把log4j分割的文件到spool目錄?;緦?shí)現(xiàn)了實(shí)時(shí)的監(jiān)控。Flume在傳完文件之后,將會(huì)修 改文件的后綴,變?yōu)?COMPLETED(后綴也可以在配置文件中靈活指定)

Exec Source 和Spool Source 比較

    1)、ExecSource可以實(shí)現(xiàn)對(duì)日志的實(shí)時(shí)收集,但是存在Flume不運(yùn)行或者指令執(zhí)行出錯(cuò)時(shí),將無法收集到日志數(shù)據(jù),無法何證日志數(shù)據(jù)的完整性。

    2)、SpoolSource雖然無法實(shí)現(xiàn)實(shí)時(shí)的收集數(shù)據(jù),但是可以使用以分鐘的方式分割文件,趨近于實(shí)時(shí)。

3)、總結(jié):如果應(yīng)用無法實(shí)現(xiàn)以分鐘切割日志文件的話,可以兩種收集方式結(jié)合使用。二、Flume Sink

FlumeSink取出Channel中的數(shù)據(jù),進(jìn)行相應(yīng)的存儲(chǔ)文件系統(tǒng),數(shù)據(jù)庫,或者提交到遠(yuǎn)程服務(wù)器。

Flume也提供了各種sink的實(shí)現(xiàn),包括HDFS sink、Loggersink、Avro sink、File Roll sink、Null sink、Hbasesink,etc。

 

三、Flume Channel

FlumeChannel主要提供一個(gè)隊(duì)列的功能,對(duì)source提供中的數(shù)據(jù)進(jìn)行簡單的緩存。

Flume對(duì)于Channel,則提供了Memory Channel、JDBC Chanel、File Channel,etc。

其中:

MemoryChannel可以實(shí)現(xiàn)高速的吞吐,但是無法保證數(shù)據(jù)的完整性。

MemoryRecoverChannel在官方文檔的建議上已經(jīng)建義使用FileChannel來替換。

FileChannel保證數(shù)據(jù)的完整性與一致性,事件持久化在本地文件系統(tǒng)里(性能較差)。在具體配置不現(xiàn)的FileChannel時(shí),建議FileChannel設(shè)置的目錄和程序日志文件保存的目錄設(shè)成不同的磁盤,以便提高效率.


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI