更新時(shí)間:2021-12-01 來源:黑馬程序員 瀏覽量:
Flume原是Cloudera公司提供的一個高可用的、高可靠的、分布式海量日志采集、聚合和傳輸系統(tǒng),而后納人到了Apache旗下,作為一個頂級開源項(xiàng)目。Apache Flume不僅只限于日志數(shù)據(jù)的采集,由于Flume采集的數(shù)據(jù)源是可定制的,因此Flume還可用于傳輸大量事件數(shù)據(jù),包括但不限于網(wǎng)絡(luò)流量數(shù)據(jù)、社交媒體生成的數(shù)據(jù)、電子郵件消息以及幾乎任何可能的數(shù)據(jù)源。
當(dāng)前Flume分為兩個版本: 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ā)人員對Cloudera Flume的代碼進(jìn)行了重構(gòu),同時(shí)對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ī)制,如下圖所示。
從圖上可以看出,F(xiàn)lume基本架構(gòu)中有一個Agent(代理),它是Flume的核心角色,F(xiàn)lume
Agent是一個JVM進(jìn)程,它承載著數(shù)據(jù)從外部源流向下一個目標(biāo)的3個核心組件:Source、Channel和Sink。結(jié)合上圖,對這3個重要組件進(jìn)行說明,具體如下。
●Source(數(shù)據(jù)采集器):用于源數(shù)據(jù)的采集(如上圖,從一個Web服務(wù)器采集源數(shù)據(jù)),然后將采集到的數(shù)據(jù)寫人到Channel中并流向Sink;
●Channel(緩沖通道): 底層是一個緩沖隊(duì)列,對Source中的數(shù)據(jù)進(jìn)行緩存,將數(shù)據(jù)高效、準(zhǔn)確地寫人Sink,待數(shù)據(jù)全部到達(dá)Sink后,F(xiàn)lume就會刪除該緩存通道中的數(shù)據(jù);
●Sink(接收器):接收并匯集流向Sink的所有數(shù)據(jù),根據(jù)需求,可以直接進(jìn)行集中式存儲(如上圖,采用HDFS進(jìn)行存儲),也可以繼續(xù)作為數(shù)據(jù)源傳人其他遠(yuǎn)程服務(wù)器或者Source中。
在整個數(shù)據(jù)傳輸?shù)倪^程中,F(xiàn)lume將流動的數(shù)據(jù)封裝到一個event(事件)中,它是Flume內(nèi)部數(shù)據(jù)傳輸?shù)幕締卧?。一個完整的event包含headers和body,其中headers包含了一些標(biāo)識信息,而body中就是Flume收集到的數(shù)據(jù)信息。
猜你喜歡: