1.概述
Flume是Cloudera提供的一個(gè)高可用的钧忽,高可靠的老厌,分布式的海量日志采集、聚合和傳輸?shù)能浖?Flume的核心是把數(shù)據(jù)從數(shù)據(jù)源(source)收集過來看锉,再將收集到的數(shù)據(jù)送到指定的目的地(sink)姿锭。
為了保證輸送的過程一定成功,在送到目的地(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ù)倪^程中炒辉,流動(dòng)的是event豪墅,它是Flume內(nèi)部數(shù)據(jù)傳輸?shù)淖罨締卧vent將傳輸?shù)臄?shù)據(jù)進(jìn)行封裝黔寇。如果是文本文件偶器,通常是一行記錄,event也是事務(wù)的基本單位缝裤。event從source屏轰,流向channel,再到sink憋飞,本身為一個(gè)字節(jié)數(shù)組亭枷,并可攜帶headers(頭信息)信息。event代表著一個(gè)數(shù)據(jù)的最小完整單元搀崭,從外部數(shù)據(jù)源來叨粘,向外部的目的地去。
一個(gè)完整的event包括:event headers瘤睹、event body升敲、event信息,其中event信息就是flume收集到的日記記錄轰传。
3.Flume采集系統(tǒng)結(jié)構(gòu)
3.1簡單結(jié)構(gòu)
image.png
3.2復(fù)雜結(jié)構(gòu)
多級(jí)agent之間串聯(lián)
image.png