首頁技術(shù)文章正文

Flume的運(yùn)行機(jī)制介紹

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

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

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


Flume運(yùn)行機(jī)制

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

flume基本架構(gòu)

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

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

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

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

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



猜你喜歡:

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

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

Spark Mllib分層抽樣操作步驟

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

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!