全國咨詢/投訴熱線:400-618-4000

基于Flume設計實現分層日志收集系統有什么好處?【大數據技術】

更新時間:2019年10月10日18時05分 來源:傳智播客 瀏覽次數:

基于Flume設計實現分層日志收集系統,到底有什么好處呢?我們可以先看一下,如果不分層,會帶來哪些問題:

如果需要通過Kafka去緩沖上游基于Flume收集而構建的日志流,對于數據平臺內部服務器產生的數據還好,但是如果日志數據是跨業務組,甚至是跨部門,那么就需要將Kafka相關信息暴露給外部,這樣對Kafka的訪問便不是數據平臺內部可控的。

如果是外部日志進入平臺內部HDFS,這樣如果需要對Hadoop系統進行升級或例行維護,這種直連的方式會影響到上游部署Flume的日志流的始端日志收集服務。

如果數據平臺內部某些系統,如Kafka集群、HDFS集群所在節點的機房位置變更,數據遷移,會使得依賴日志數據的外部系統受到不同程度的影響,外部系統需要相關開發或運維人員參與進來。

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

由于所有數據源端Flume Agent收集的日志進入數據平臺的時候,沒有一個統一的類似總線的組件,很難因為某些業務擴展而獨立地去升級數據平臺內部的接收層服務節點,可能為了升級數據平臺內部某個系統或服務而導致影響了其他的接收層服務節點?!就扑]了解大數據培訓課程

通過下圖我們可以看出,這種單層日志收集系統設計,存在太多的問題,而且系統或服務越多導致整個日志收集系統越難以控制:


Flume設計實現分層日志收集系統1


上圖中,無論是外部還是內部,只要部署了Flume Agent的節點,都直接同內部的Kafka集群和Hadoop集群相連,所以在數據平臺內部只能盡量保持Kafka和Hadoop集群正常穩定運行,也要為外部日志收集Flume Agent的數據流量的陡增和異常變化做好防控準備。再者,如需停機維護或者升級某一個集群,可能都需要通知外部所有Flume Agent所在節點的業務方,做好應對(停機)準備。

接著看,如果我們基于Flume使用分層的方式來設計日志收集系統,又有哪些優勢,如下圖所示:


Flume設計實現分層日志收集系統2

上圖中,Flume日志收集系統采用兩層架構設計:第一層(L1)是日志收集層,第二層(L2)是數據平臺緩沖層(匯聚層)。通過這種方式,使得日志收集系統有如下特點:

針對數據平臺外部的業務系統,根據需要分析的數據業務類型進行分組,屬于同一種類型的業務日志,在數據平臺前端增加了一個Flume匯聚層節點組,該組節點只影響到它對應的L1層的業務數據

如果Hadoop集群、Kafka需要停機維護或升級,對外部L1層Flume Agent沒有影響,只需要在L2層做好數據的接收與緩沖即可,待維護或升級結束,繼續將L2層緩存的數據導入到數據存儲系統

如果外部某個類型的業務日志數據節點需要擴容,直接在L1層將數據流指向數據平臺內部與之相對應的L2層Flume Agent節點組即可,能夠對外部因業務變化發生的新增日志收集需求,進行快速地響應和部署

對于數據平臺內部,因為收集日志的節點非??煽?,可以直接通過L1層Flume Agent使日志數據流入HDFS或Kafka,當然為了架構統一和管理,最好也是通過L2層Flume Agent節點組來匯聚/緩沖L1層Flume Agent收集的日志數據

通過上面分析可見,分層無非是為了使的日志數據源節點的Flume Agent服務與數據平臺的存儲系統(Kafka/HDFS)進行解耦,同時能夠更好地對同類型業務多節點的日志流進行一個聚合操作,并分離開獨立管理。另外,可以根據實際業務需要,適當增加Flume系統分層,滿足日志流數據的匯聚需要。

應用整體架構

我們看一下,Flume日志收集系統,在我們這個示例應用中處于一個什么位置,我簡單畫了一下圖,加了一些有關數據處理和分析的節點/組件,如下圖所示:

Flume設計實現分層日志收集系統3


這里,簡單了解一下上圖即可,由于日志收集在整個應用系統中是很重要的一個環節,所以必須保證日志收集系統設計的可靠、可用、靈活、穩定,通過上面在日志收集系統收集日志之后,數據平臺所做的大量分析處理,來凸顯日志收集系統的重要性,這里其他內容不做過多說明。

人妻系列无码专区_漂亮人妻被中出中文字幕_人妻中文制服巨乳中文