flume原理

1.Flume

是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類(lèi)數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫(xiě)到各種數(shù)據(jù)接受方(可定制)的能力;

2.Flume設(shè)計(jì)目標(biāo):

---》可靠性:當(dāng)節(jié)點(diǎn)出現(xiàn)故障時(shí),日志能夠被傳送到其他節(jié)點(diǎn)上而不會(huì)丟失。Flume提供了三種級(jí)別的可靠性保障,從強(qiáng)到弱依次分別為:end-to-end(Exactly once),Store on failure(當(dāng)數(shù)據(jù)接收方crash時(shí),將數(shù)據(jù)寫(xiě)到本地,待恢復(fù)后,繼續(xù)發(fā)送),Best effort(數(shù)據(jù)發(fā)送到接收方后,不會(huì)進(jìn)行確認(rèn))
---》可擴(kuò)展性:Flume采用了三層架構(gòu),分別為Source,Channel和Sink,每一層均可以水平擴(kuò)展
---》可管理性:所有Source, Channel和 Sink 由 Agent 統(tǒng)一管理,這使得系統(tǒng)便于維護(hù)

Paste_Image.png

3.各組件職責(zé):

--》Source 組件:負(fù)責(zé)日志流入,比如從文件、網(wǎng)絡(luò)、Kafka 等數(shù)據(jù)源流入數(shù)據(jù),數(shù)據(jù)流入的方式有兩種:輪訓(xùn)拉取和事件驅(qū)動(dòng);
--》Channel 組件:負(fù)責(zé)數(shù)據(jù)聚合/暫存,比如暫存到內(nèi)存、本地文件、數(shù)據(jù)庫(kù)、Kafka 等,日志數(shù)據(jù)不會(huì)在管道停留很長(zhǎng)時(shí)間,很快會(huì)被 Sink 消費(fèi)掉;
--》Sink 組件:負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)移存儲(chǔ),比如從 Channel 拿到日志后直接存儲(chǔ)到 HDFS、HBase、Kafka、ElasticSearch 等。
一個(gè)Agent會(huì)同時(shí)存在這三個(gè)組件,Source和Sink都是異步執(zhí)行的,相互之間不會(huì)影響

Paste_Image.png

4.整體結(jié)構(gòu),可以靈活配置

Source 上的數(shù)據(jù)可以復(fù)制到不同的通道上。每一個(gè) Channel 也可以連接不同數(shù)量的 Sink。這樣連接不同配置的 Agent 就可以組成一個(gè)復(fù)雜的數(shù)據(jù)收集網(wǎng)絡(luò)。

Paste_Image.png
Paste_Image.png

(1)Flume Source組件

Source 組件負(fù)責(zé)接收輸入數(shù)據(jù),并將數(shù)據(jù)寫(xiě)入管道 (Channel)。Flume的Source支持:
Avro
Exec
HTTP
Spooling Directory
Kafka
Syslog
……
其中Spooling支持監(jiān)視一個(gè)目錄或者文件,解析其中新生成的事件

(2)Flume 過(guò)濾器(攔截器):

在 App(應(yīng)用程序日志)和 Source 之間的,對(duì) App 日志進(jìn)行攔截處理的。官方已有的攔截器有(可以鏈?zhǔn)教砑佣鄠€(gè)):
--》Timestamp Interceptor: 在 event 的 header 中添加一個(gè) key 為 timestamp , value為當(dāng)前的時(shí)間戳;
--》Host Interceptor: 在 event 的 header 中添加一個(gè) key 為 host , value 為當(dāng)前機(jī)器的 hostname 或者 ip;
--》Static Interceptor:可以在 event 的 header 中添加自定義的 key 和 value;
--》Regex Filtering Interceptor: 通過(guò)正則來(lái)清洗或包含匹配的 events;
--》Regex Extractor Interceptor: 通過(guò)正則表達(dá)式來(lái)在 header 中添加指定的key , value則為正則匹配的部分

(3)Flume Channel組件

Channel組件存儲(chǔ),緩存從 Source 到 Sink 的中間數(shù)據(jù)??墒褂貌煌呐渲脕?lái)做Channel,例如:
內(nèi)存
文件
JDBC
Kafka
……
其中使用內(nèi)存性能高但不持久,有可能丟數(shù)據(jù)。使用文件更可靠,但性能不如內(nèi)存

Flume Channel 選擇器:

數(shù)據(jù)通過(guò)不同的 Channel 路由到不同的 Sink 中。官方已有的 Channel 選擇器有:
--》Replicating Channel Selector (default): 將 Source過(guò)來(lái)的 events 發(fā)往所有Channel;
--》Multiplexing Channel Selector: 可以選擇將數(shù)據(jù)發(fā)往哪些 Channel;

(4)Flume Sink組件

Sink 組件負(fù)責(zé)從管道中讀出數(shù)據(jù)并發(fā)給下一個(gè) Agent 或者最終的目的地。Sink 支持的不同目的地種類(lèi)包括:
HDFS
HBASE
Avro
ElasticSearch
File
Logger
其它的 Flume Agent

Flume 序列化器:

在 Sink 和目標(biāo)存儲(chǔ)之間自定義數(shù)據(jù)序列化方式。官方已有的序列化器有:
--》Body Text Serializer: 忽略 event header,只將 event value 寫(xiě)到輸出流;
--》Avro Event Serializer: 數(shù)據(jù)以 Avro 序列化,然后寫(xiě)到輸出流;

Flume Sink 處理器:

在多個(gè) Sink 之間選擇下一個(gè)用來(lái)發(fā)送數(shù)據(jù)的 Sink 。官方已有的 Sink 處理器有:
--》Failover Sink Processor: 每次都從活動(dòng)池選擇優(yōu)先級(jí)最高的 Sink 發(fā)送數(shù)據(jù),當(dāng)發(fā)送失敗時(shí)放入冷卻池直到超過(guò)冷凍期,一旦重新發(fā)送成功就重新進(jìn)入活動(dòng)池;
--》Load balancing Sink Processor : 每次都按照配置的方案從多個(gè) Sink 中選擇一個(gè) Sink 發(fā)送數(shù)據(jù)。目前官方提供兩種策略: round_robin, random ;


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 博客原文 翻譯作品,水平有限,如有錯(cuò)誤,煩請(qǐng)留言指正。原文請(qǐng)見(jiàn) 官網(wǎng)英文文檔 引言 概述 Apache Flume...
    rabbitGYK閱讀 11,705評(píng)論 13 34
  • 介紹 概述 Apache Flume是為有效收集聚合和移動(dòng)大量來(lái)自不同源到中心數(shù)據(jù)存儲(chǔ)而設(shè)計(jì)的可分布,可靠的,可用...
    ximengchj閱讀 3,668評(píng)論 0 13
  • Flume架構(gòu)與實(shí)踐 Flume是一款在線(xiàn)數(shù)據(jù)采集的系統(tǒng),典型的應(yīng)用場(chǎng)景是作為數(shù)據(jù)的總線(xiàn),在線(xiàn)的進(jìn)行日志的采集、分...
    mike_zhangliang閱讀 2,205評(píng)論 0 2
  • 在互聯(lián)網(wǎng)迅猛發(fā)展的今天 各大廠發(fā)揮十八般武藝的收集用戶(hù)的各種信息,甚至包括點(diǎn)擊的位置,我們也經(jīng)常發(fā)現(xiàn)自己剛搜完一個(gè)...
    歡醉閱讀 2,030評(píng)論 0 12
  • Flume1-架構(gòu)及應(yīng)用介紹 轉(zhuǎn)載:http://blog.csdn.net/a2011480169/articl...
    raincoffee閱讀 382評(píng)論 0 0

友情鏈接更多精彩內(nèi)容