1.概述
Flume是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)能浖?Flume的核心是把數(shù)據(jù)從數(shù)據(jù)源(source)收集過(guò)來(lái),再將收集到的數(shù)據(jù)送到指定的目的地(sink)。
為了保證輸送的過(guò)程一定成功,在送到目的地(sink)之前,會(huì)先緩存數(shù)據(jù)(channel),待數(shù)據(jù)真正到達(dá)目的地(sink)后,flume在刪除自己緩存的數(shù)據(jù)。
2.運(yùn)行機(jī)制
Flume系統(tǒng)中核心的角色是agent,agent本身是一個(gè)Java進(jìn)程,一般運(yùn)行在日志收集節(jié)點(diǎn)。

圖片1.png
每一個(gè)agent相當(dāng)于一個(gè)數(shù)據(jù)傳遞員,內(nèi)部有三個(gè)組件:
Source:采集源,用于跟數(shù)據(jù)源對(duì)接,以獲取數(shù)據(jù);
Sink:下沉地,采集數(shù)據(jù)的傳送目的,用于往下一級(jí)agent傳遞數(shù)據(jù)或者最終存儲(chǔ)系統(tǒng)傳遞數(shù)據(jù);
Channel:agent內(nèi)部的數(shù)據(jù)傳輸通道,用于從source將數(shù)據(jù)傳遞到sink;
在整個(gè)數(shù)據(jù)的傳輸?shù)倪^(guò)程中,流動(dòng)的是event,它是Flume內(nèi)部數(shù)據(jù)傳輸?shù)淖罨締卧?。event將傳輸?shù)臄?shù)據(jù)進(jìn)行封裝。如果是文本文件,通常是一行記錄,event也是事務(wù)的基本單位。event從source,流向channel,再到sink,本身為一個(gè)字節(jié)數(shù)組,并可攜帶headers(頭信息)信息。event代表著一個(gè)數(shù)據(jù)的最小完整單元,從外部數(shù)據(jù)源來(lái),向外部的目的地去。
一個(gè)完整的event包括:event headers、event body、event信息,其中event信息就是flume收集到的日記記錄。
3.Flume采集系統(tǒng)結(jié)構(gòu)
3.1簡(jiǎn)單結(jié)構(gòu)

image.png
3.2復(fù)雜結(jié)構(gòu)
多級(jí)agent之間串聯(lián)

image.png