教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

基于Flume設(shè)計(jì)實(shí)現(xiàn)分層日志收集系統(tǒng)有什么好處?【大數(shù)據(jù)技術(shù)】

更新時(shí)間:2019年10月10日18時(shí)05分 來(lái)源:傳智播客 瀏覽次數(shù):

基于Flume設(shè)計(jì)實(shí)現(xiàn)分層日志收集系統(tǒng),到底有什么好處呢?我們可以先看一下,如果不分層,會(huì)帶來(lái)哪些問(wèn)題:

如果需要通過(guò)Kafka去緩沖上游基于Flume收集而構(gòu)建的日志流,對(duì)于數(shù)據(jù)平臺(tái)內(nèi)部服務(wù)器產(chǎn)生的數(shù)據(jù)還好,但是如果日志數(shù)據(jù)是跨業(yè)務(wù)組,甚至是跨部門(mén),那么就需要將Kafka相關(guān)信息暴露給外部,這樣對(duì)Kafka的訪(fǎng)問(wèn)便不是數(shù)據(jù)平臺(tái)內(nèi)部可控的。

如果是外部日志進(jìn)入平臺(tái)內(nèi)部HDFS,這樣如果需要對(duì)Hadoop系統(tǒng)進(jìn)行升級(jí)或例行維護(hù),這種直連的方式會(huì)影響到上游部署Flume的日志流的始端日志收集服務(wù)。

如果數(shù)據(jù)平臺(tái)內(nèi)部某些系統(tǒng),如Kafka集群、HDFS集群所在節(jié)點(diǎn)的機(jī)房位置變更,數(shù)據(jù)遷移,會(huì)使得依賴(lài)日志數(shù)據(jù)的外部系統(tǒng)受到不同程度的影響,外部系統(tǒng)需要相關(guān)開(kāi)發(fā)或運(yùn)維人員參與進(jìn)來(lái)。

由于收集日志的數(shù)據(jù)源端可能是外部一些服務(wù)器(多個(gè)單個(gè)的節(jié)點(diǎn)),一些業(yè)務(wù)集群(相互協(xié)作的多節(jié)點(diǎn)組),也可能是內(nèi)部一些提供收集服務(wù)的服務(wù)節(jié)點(diǎn),這些所有的服務(wù)器上部署的Flume Agent都處于一層中,比較難于分組管理。

由于所有數(shù)據(jù)源端Flume Agent收集的日志進(jìn)入數(shù)據(jù)平臺(tái)的時(shí)候,沒(méi)有一個(gè)統(tǒng)一的類(lèi)似總線(xiàn)的組件,很難因?yàn)槟承I(yè)務(wù)擴(kuò)展而獨(dú)立地去升級(jí)數(shù)據(jù)平臺(tái)內(nèi)部的接收層服務(wù)節(jié)點(diǎn),可能為了升級(jí)數(shù)據(jù)平臺(tái)內(nèi)部某個(gè)系統(tǒng)或服務(wù)而導(dǎo)致影響了其他的接收層服務(wù)節(jié)點(diǎn)?!就扑]了解大數(shù)據(jù)培訓(xùn)課程

通過(guò)下圖我們可以看出,這種單層日志收集系統(tǒng)設(shè)計(jì),存在太多的問(wèn)題,而且系統(tǒng)或服務(wù)越多導(dǎo)致整個(gè)日志收集系統(tǒng)越難以控制:


Flume設(shè)計(jì)實(shí)現(xiàn)分層日志收集系統(tǒng)1


上圖中,無(wú)論是外部還是內(nèi)部,只要部署了Flume Agent的節(jié)點(diǎn),都直接同內(nèi)部的Kafka集群和Hadoop集群相連,所以在數(shù)據(jù)平臺(tái)內(nèi)部只能盡量保持Kafka和Hadoop集群正常穩(wěn)定運(yùn)行,也要為外部日志收集Flume Agent的數(shù)據(jù)流量的陡增和異常變化做好防控準(zhǔn)備。再者,如需停機(jī)維護(hù)或者升級(jí)某一個(gè)集群,可能都需要通知外部所有Flume Agent所在節(jié)點(diǎn)的業(yè)務(wù)方,做好應(yīng)對(duì)(停機(jī))準(zhǔn)備。

接著看,如果我們基于Flume使用分層的方式來(lái)設(shè)計(jì)日志收集系統(tǒng),又有哪些優(yōu)勢(shì),如下圖所示:


Flume設(shè)計(jì)實(shí)現(xiàn)分層日志收集系統(tǒng)2

上圖中,F(xiàn)lume日志收集系統(tǒng)采用兩層架構(gòu)設(shè)計(jì):第一層(L1)是日志收集層,第二層(L2)是數(shù)據(jù)平臺(tái)緩沖層(匯聚層)。通過(guò)這種方式,使得日志收集系統(tǒng)有如下特點(diǎn):

針對(duì)數(shù)據(jù)平臺(tái)外部的業(yè)務(wù)系統(tǒng),根據(jù)需要分析的數(shù)據(jù)業(yè)務(wù)類(lèi)型進(jìn)行分組,屬于同一種類(lèi)型的業(yè)務(wù)日志,在數(shù)據(jù)平臺(tái)前端增加了一個(gè)Flume匯聚層節(jié)點(diǎn)組,該組節(jié)點(diǎn)只影響到它對(duì)應(yīng)的L1層的業(yè)務(wù)數(shù)據(jù)

如果Hadoop集群、Kafka需要停機(jī)維護(hù)或升級(jí),對(duì)外部L1層Flume Agent沒(méi)有影響,只需要在L2層做好數(shù)據(jù)的接收與緩沖即可,待維護(hù)或升級(jí)結(jié)束,繼續(xù)將L2層緩存的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)存儲(chǔ)系統(tǒng)

如果外部某個(gè)類(lèi)型的業(yè)務(wù)日志數(shù)據(jù)節(jié)點(diǎn)需要擴(kuò)容,直接在L1層將數(shù)據(jù)流指向數(shù)據(jù)平臺(tái)內(nèi)部與之相對(duì)應(yīng)的L2層Flume Agent節(jié)點(diǎn)組即可,能夠?qū)ν獠恳驑I(yè)務(wù)變化發(fā)生的新增日志收集需求,進(jìn)行快速地響應(yīng)和部署

對(duì)于數(shù)據(jù)平臺(tái)內(nèi)部,因?yàn)槭占罩镜墓?jié)點(diǎn)非常可控,可以直接通過(guò)L1層Flume Agent使日志數(shù)據(jù)流入HDFS或Kafka,當(dāng)然為了架構(gòu)統(tǒng)一和管理,最好也是通過(guò)L2層Flume Agent節(jié)點(diǎn)組來(lái)匯聚/緩沖L1層Flume Agent收集的日志數(shù)據(jù)

通過(guò)上面分析可見(jiàn),分層無(wú)非是為了使的日志數(shù)據(jù)源節(jié)點(diǎn)的Flume Agent服務(wù)與數(shù)據(jù)平臺(tái)的存儲(chǔ)系統(tǒng)(Kafka/HDFS)進(jìn)行解耦,同時(shí)能夠更好地對(duì)同類(lèi)型業(yè)務(wù)多節(jié)點(diǎn)的日志流進(jìn)行一個(gè)聚合操作,并分離開(kāi)獨(dú)立管理。另外,可以根據(jù)實(shí)際業(yè)務(wù)需要,適當(dāng)增加Flume系統(tǒng)分層,滿(mǎn)足日志流數(shù)據(jù)的匯聚需要。

應(yīng)用整體架構(gòu)

我們看一下,F(xiàn)lume日志收集系統(tǒng),在我們這個(gè)示例應(yīng)用中處于一個(gè)什么位置,我簡(jiǎn)單畫(huà)了一下圖,加了一些有關(guān)數(shù)據(jù)處理和分析的節(jié)點(diǎn)/組件,如下圖所示:

Flume設(shè)計(jì)實(shí)現(xiàn)分層日志收集系統(tǒng)3


這里,簡(jiǎn)單了解一下上圖即可,由于日志收集在整個(gè)應(yīng)用系統(tǒng)中是很重要的一個(gè)環(huán)節(jié),所以必須保證日志收集系統(tǒng)設(shè)計(jì)的可靠、可用、靈活、穩(wěn)定,通過(guò)上面在日志收集系統(tǒng)收集日志之后,數(shù)據(jù)平臺(tái)所做的大量分析處理,來(lái)凸顯日志收集系統(tǒng)的重要性,這里其他內(nèi)容不做過(guò)多說(shuō)明。

0 分享到:
和我們?cè)诰€(xiàn)交談!