首頁技術文章正文

Flume的運行機制介紹

更新時間:2021-12-01 來源:黑馬程序員 瀏覽量:

Flume原是Cloudera公司提供的一個高可用的、高可靠的、分布式海量日志采集、聚合和傳輸系統(tǒng),而后納人到了Apache旗下,作為一個頂級開源項目。Apache Flume不僅只限于日志數(shù)據(jù)的采集,由于Flume采集的數(shù)據(jù)源是可定制的,因此Flume還可用于傳輸大量事件數(shù)據(jù),包括但不限于網(wǎng)絡流量數(shù)據(jù)、社交媒體生成的數(shù)據(jù)、電子郵件消息以及幾乎任何可能的數(shù)據(jù)源。

當前Flume分為兩個版本: Flume 0.9x版本,統(tǒng)稱Flume-og(original generation)和Flume 1.x版本,統(tǒng)稱Flume-ng(next generation)。 由于早期的Flume-og存在設計不合理、代碼臃腫、不易擴展等問題,因此在Flume納入到Apache旗下后,開發(fā)人員對Cloudera Flume的代碼進行了重構,同時對Flume功能進行了補充和加強,并重命名為Apache Flume,于是就出現(xiàn)了Flume-ng與Flume-og兩種截然不同的版本。而在實際開發(fā)中,多數(shù)使用目前比較流行的Flumeng版本進行Flume開發(fā)。


Flume運行機制

Flume的核心是把數(shù)據(jù)從數(shù)據(jù)源(如WebServer)通過數(shù)據(jù)采集器(Source)收集過來,再將收集的數(shù)據(jù)通過緩沖通道(Channel)匯集到指定的接收器(Sink)。這里可以參考官方的架構圖,具體展示Flume的運行機制,如下圖所示。

flume基本架構

從圖上可以看出,F(xiàn)lume基本架構中有一個Agent(代理),它是Flume的核心角色,F(xiàn)lume Agent是一個JVM進程,它承載著數(shù)據(jù)從外部源流向下一個目標的3個核心組件:Source、Channel和Sink。結合上圖,對這3個重要組件進行說明,具體如下。

●Source(數(shù)據(jù)采集器):用于源數(shù)據(jù)的采集(如上圖,從一個Web服務器采集源數(shù)據(jù)),然后將采集到的數(shù)據(jù)寫人到Channel中并流向Sink;

●Channel(緩沖通道): 底層是一個緩沖隊列,對Source中的數(shù)據(jù)進行緩存,將數(shù)據(jù)高效、準確地寫人Sink,待數(shù)據(jù)全部到達Sink后,F(xiàn)lume就會刪除該緩存通道中的數(shù)據(jù);

●Sink(接收器):接收并匯集流向Sink的所有數(shù)據(jù),根據(jù)需求,可以直接進行集中式存儲(如上圖,采用HDFS進行存儲),也可以繼續(xù)作為數(shù)據(jù)源傳人其他遠程服務器或者Source中。

在整個數(shù)據(jù)傳輸?shù)倪^程中,F(xiàn)lume將流動的數(shù)據(jù)封裝到一個event(事件)中,它是Flume內(nèi)部數(shù)據(jù)傳輸?shù)幕締卧?。一個完整的event包含headers和body,其中headers包含了一些標識信息,而body中就是Flume收集到的數(shù)據(jù)信息。



猜你喜歡:

數(shù)據(jù)分析的流程是什么?如何做數(shù)據(jù)分析?

Scrapy框架的工作原理是什么?

Spark Mllib分層抽樣操作步驟

黑馬程序員python+大數(shù)據(jù)開課程

分享到:
在線咨詢 我要報名
和我們在線交談!