Flume是什么

Flume是一個(gè)高可用、高可靠,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Flume支持在日志系統(tǒng)中定制各類(lèi)數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫(xiě)到各種數(shù)據(jù)接受方(可定制)的能力。其中Flume-NG是Flume的一個(gè)分支,其目的是要明顯簡(jiǎn)單,體積更小,更容易部署,其最基本的架構(gòu)如下圖所示:

圖1 Flume-NG架構(gòu)

Flume是什么1

Flume-NG由一個(gè)個(gè)Agent來(lái)組成,而每個(gè)Agent由Source、Channel、Sink三個(gè)模塊組成,其中Source負(fù)責(zé)接收數(shù)據(jù),Channel負(fù)責(zé)數(shù)據(jù)的傳輸,Sink則負(fù)責(zé)數(shù)據(jù)向下一端的發(fā)送。

Flume也可以配置成多個(gè)Source、Channel、Sink,如圖2所示:

圖2 Flume結(jié)構(gòu)圖

Flume是什么2

Flume的可靠性基于Agent間事務(wù)的交換,下一個(gè)Agent down掉,Channel可以持久化數(shù)據(jù),Agent恢復(fù)后再傳輸。Flume的可用性則基于內(nèi)建的Load Balancing和Failover機(jī)制。Channel及Agent都可以配多個(gè)實(shí)體,實(shí)體之間可以使用負(fù)載分擔(dān)等策略。每個(gè)Agent為一個(gè)JVM進(jìn)程,同一臺(tái)服務(wù)器可以有多個(gè)Agent。收集節(jié)點(diǎn)(Agent1,2,3)負(fù)責(zé)處理日志,匯聚節(jié)點(diǎn)(Agent4)負(fù)責(zé)寫(xiě)入HDFS,每個(gè)收集節(jié)點(diǎn)的Agent可以選擇多個(gè)匯聚節(jié)點(diǎn),這樣可以實(shí)現(xiàn) 負(fù)載均衡 。

圖3 Flume級(jí)聯(lián)結(jié)構(gòu)圖

Flume是什么3