Flume概述

題記

本文內(nèi)容來(lái)源于拉鉤教育大數(shù)據(jù)高薪訓(xùn)練營(yíng)

Flume的定義

  • Flume由Cloudera公司開(kāi)發(fā),是一個(gè)分布式、高可靠、高可用的海量日志采集、聚合、傳輸?shù)南到y(tǒng)。
  • Flume支持在日志系統(tǒng)中定制各類(lèi)數(shù)據(jù)發(fā)送方,用于采集數(shù)據(jù);
  • Flume提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫(xiě)到各種數(shù)據(jù)接收方的能力。簡(jiǎn)單的說(shuō),F(xiàn)lume是實(shí)時(shí)采集日志的數(shù)據(jù)采集引擎。
Flume基本數(shù)據(jù)流程.png

Flume的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)


  • 分布式:flume分布式集群部署,擴(kuò)展性好
  • 可靠性好: 當(dāng)節(jié)點(diǎn)出現(xiàn)故障時(shí),日志能夠被傳送到其他節(jié)點(diǎn)上而不會(huì)丟失
  • 易用性:flume配置使用較繁瑣,對(duì)使用人員專(zhuān)業(yè)技術(shù)要求高
  • 實(shí)時(shí)采集:flume采集流模式進(jìn)行數(shù)據(jù)實(shí)時(shí)采集

適用場(chǎng)景:適用于日志文件實(shí)時(shí)采集。

缺點(diǎn)


  • 無(wú)法監(jiān)控文件內(nèi)容的變化,只能監(jiān)控文件的增加,如果修改了文件名,flume會(huì)報(bào)錯(cuò)。

Flume的體系架構(gòu)

flume體系結(jié)構(gòu).png

Flume架構(gòu)中的組件

  • Agent本質(zhì)上是一個(gè) JVM 進(jìn)程,該JVM進(jìn)程控制Event數(shù)據(jù)流從外部日志生產(chǎn)者那里傳輸?shù)侥康牡兀ɑ蛘呤窍乱粋€(gè)Agent)。一個(gè)完整的Agent中包含了三個(gè)組件Source、ChannelSink,Source是指數(shù)據(jù)的來(lái)源和方式,Channel是一個(gè)數(shù)據(jù)的緩沖池,Sink定義了數(shù)據(jù)輸出的方式和目的地。
  • Source是負(fù)責(zé)接收數(shù)據(jù)到Flume Agent的組件。Source組件可以處理各種類(lèi)
    型、各種格式的日志數(shù)據(jù),包括avro、exec、spooldir、netcat等。
  • Channel是位于Source和Sink之間的緩沖區(qū)。Channel允許Source和Sink運(yùn)作在不同的速率上。Channel是線程安全的,可以同時(shí)處理多個(gè)Source的寫(xiě)入操作及多個(gè)Sink的讀取操作。常用的Channel包括:
    • Memory Channel是內(nèi)存中的隊(duì)列。Memory Channel在允許數(shù)據(jù)丟失的情景下適用。如果不允許數(shù)據(jù)丟失,應(yīng)該避免使用Memory Channel,因?yàn)槌绦蛩劳?、機(jī)器宕機(jī)或者重啟都可能會(huì)導(dǎo)致數(shù)據(jù)丟失;
    • File Channel將所有事件寫(xiě)到磁盤(pán)。因此在程序關(guān)閉或機(jī)器宕機(jī)的情況下不會(huì)丟失數(shù)據(jù);
  • Sink不斷地輪詢Channel中的事件且批量地移除它們,并將這些事件批量寫(xiě)入到存儲(chǔ)或索引系統(tǒng)、或者被發(fā)送到另一個(gè)Flume Agent。
    • Sink是完全事務(wù)性的。在從Channel批量刪除數(shù)據(jù)之前,每個(gè)Sink用Channel啟動(dòng)一個(gè)事務(wù)。批量事件一旦成功寫(xiě)出到存儲(chǔ)系統(tǒng)或下一個(gè)Flume Agent,Sink就利用Channel提交事務(wù)。事務(wù)一旦被提交,該Channel從自己的內(nèi)部緩沖區(qū)刪除事件。
    • Sink組件包括hdfs、logger、avro、file、null、HBase、消息隊(duì)列等。
  • Event是Flume定義的一個(gè)數(shù)據(jù)流傳輸?shù)?strong>最小單位。

Flume四種模式&拓?fù)浣Y(jié)構(gòu)

  • 串行模式
    將多個(gè)flume給順序連接起來(lái),從最初的source開(kāi)始到最終sink傳送的目的存儲(chǔ)系統(tǒng)。
    此模式不建議橋接過(guò)多的flume數(shù)量, flume數(shù)量過(guò)多不僅會(huì)影響傳輸速率,而且一旦傳輸過(guò)程中某個(gè)節(jié)點(diǎn)flume宕機(jī),會(huì)影響整個(gè)傳輸系統(tǒng)。
    串行模式.png
  • 復(fù)制模式(單Souce多Channel、Sink模式)
    將事件流向一個(gè)或者多個(gè)目的地。這種模式將數(shù)據(jù)源復(fù)制到多個(gè)channel中,每個(gè)channel都有相同的數(shù)據(jù),sink可以選擇傳送的不同的目的地。
    復(fù)制模式.png
  • 負(fù)載均衡模式(單Source、Channel多Sink)
    將多個(gè)sink邏輯上分到一個(gè)sink組,flume將數(shù)據(jù)發(fā)送到不同的sink,主要解決負(fù)載均衡和故障轉(zhuǎn)移問(wèn)題。
    負(fù)載均衡模式.png
  • 聚合模式
    這種模式最常見(jiàn)的,也非常實(shí)用,日常web應(yīng)用通常分布在上百個(gè)服務(wù)器,大者甚至上千個(gè)、上萬(wàn)個(gè)服務(wù)器。產(chǎn)生的日志,處理起來(lái)也非常麻煩。用這種組合方式能很好的解決這一問(wèn)題,每臺(tái)服務(wù)器部署一個(gè)flume采集日志,傳送到一個(gè)集中收集日志的flume,再由此flume上傳hdfs、hive、hbase、消息隊(duì)列中。
    聚合模式.png
?著作權(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)容

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