Flume介紹

聲明

我對(duì)Flume的研究并不深,這一篇文章來(lái)源于2016年3月的某一個(gè)下午對(duì)Flume的調(diào)研,僅有一個(gè)下午,所以可能有一些觀點(diǎn)是不對(duì)的。另外钠导,文章很多內(nèi)容來(lái)源于一些大神的博文,當(dāng)時(shí)匆匆沒(méi)有記錄引用來(lái)源森瘪。所以辈双,如果有人可以發(fā)現(xiàn)本文的錯(cuò)誤,以及引用的文章柜砾,還請(qǐng)?jiān)诹粞灾兄赋雠韧Hf(wàn)分感謝。

Flume OG

Flume OG:Flume Original Generation痰驱,初代Flume证芭。
由三種角色構(gòu)成:代理點(diǎn)(agent)、收集節(jié)點(diǎn)(collector)担映、主節(jié)點(diǎn)(master)

  • agent 從各個(gè)數(shù)據(jù)源收集日志數(shù)據(jù)废士,將收集到的數(shù)據(jù)集中到 collector,然后由收集節(jié)點(diǎn)匯總存入 hdfs蝇完。
  • master 負(fù)責(zé)管理 agent官硝,collector 的活動(dòng)。
  • agent短蜕、collector 都稱為 node氢架,node 的角色根據(jù)配置的不同分為 logical node(邏輯節(jié)點(diǎn))、physical node(物理節(jié)點(diǎn))朋魔。對(duì) logical nodes 和 physical nodes 的區(qū)分岖研、配置、使用一直以來(lái)都是使用者最頭疼的地方警检。
  • agent孙援、collector由Source、Sink組成扇雕,當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)是從Source傳送到Sink的拓售。


    flume-og-01.png

Flume NG

Flume NG:Flume New Generation

  • NG只有一種角色節(jié)點(diǎn):代理點(diǎn)(agent)。
  • 沒(méi)有collector镶奉、master節(jié)點(diǎn)础淤。這是核心組件最核心的變化崭放。
  • 去除了 physical nodes、logical nodes 的概念和相關(guān)內(nèi)容值骇。
  • agent 節(jié)點(diǎn)的組成也發(fā)生了變化莹菱。NG agent 由 source移国、sink吱瘩、channel 組成。
  • NG刪減了角色迹缀,脫離了對(duì)Zookeeper的依賴


    flume-ng.png

Flume NG分析

基本概念

  • Event:一個(gè)數(shù)據(jù)單元使碾,帶有一個(gè)可選的消息頭。
  • Flow:Event從源點(diǎn)到達(dá)目的點(diǎn)的遷移的抽象祝懂。
  • Client:操作位于源點(diǎn)處的Event票摇,將其發(fā)送到Flume Agent。
  • Agent:一個(gè)獨(dú)立的Flume進(jìn)程砚蓬,包含組件Source矢门、Channel、Sink灰蛙。
  • Source:用來(lái)消費(fèi)傳遞到該組件的Event 祟剔,存入channel中。
  • Channel:中轉(zhuǎn)Event的一個(gè)臨時(shí)存儲(chǔ)摩梧,保存有Source組件傳遞過(guò)來(lái)的Event物延。
  • Sink:從Channel中讀取并移除Event,將Event傳遞到Flow Pipeline中的下一個(gè)Agent(如果有的話)仅父。

數(shù)據(jù)流:

Flume 的核心是把數(shù)據(jù)從數(shù)據(jù)源收集過(guò)來(lái)叛薯,再送到目的地。為了保證輸送一定成功笙纤,在送到目的地之前耗溜,會(huì)先緩存數(shù)據(jù),待數(shù)據(jù)真正到達(dá)目的地后省容,刪除自己緩存的數(shù)據(jù):當(dāng)sink寫入失敗后强霎,可以自動(dòng)重啟,不會(huì)造成數(shù)據(jù)丟失蓉冈,因此很可靠城舞。
Flume 傳輸?shù)臄?shù)據(jù)的基本單位是 Event,如果是文本文件寞酿,通常是一行記錄家夺,這也是事務(wù)的基本單位。Event 從 Source伐弹,流向 Channel拉馋,再到 Sink,本身為一個(gè) byte 數(shù)組,并可攜帶 headers 信息煌茴。Event 代表著一個(gè)數(shù)據(jù)流的最小完整單元随闺,從外部數(shù)據(jù)源來(lái),向外部的目的地去蔓腐。

核心組件:

Source

  • ExecSource: 以運(yùn)行 Linux 命令的方式矩乐,持續(xù)的輸出最新的數(shù)據(jù),如 tail -F 文件名 指令回论,在這種方式下散罕,取的文件名必須是指定的。 ExecSource 可以實(shí)現(xiàn)對(duì)日志的實(shí)時(shí)收集傀蓉,但是存在Flume不運(yùn)行或者指令執(zhí)行出錯(cuò)時(shí)欧漱,將無(wú)法收集到日志數(shù)據(jù),無(wú)法保證日志數(shù)據(jù)的完整性葬燎。
  • SpoolSource: 監(jiān)測(cè)配置的目錄下新增的文件误甚,并將文件中的數(shù)據(jù)讀取出來(lái)。需要注意兩點(diǎn):拷貝到 spool 目錄下的文件不可以再打開(kāi)編輯谱净;spool 目錄下不可包含相應(yīng)的子目錄窑邦。SpoolSource無(wú)法實(shí)現(xiàn)實(shí)時(shí)的收集數(shù)據(jù),但可以設(shè)置以分鐘的方式分割文件岳遥,趨于實(shí)時(shí)奕翔。

Channel

Memory Channel, JDBC Channel , File Channel,Psuedo Transaction Channel浩蓉。比較常見(jiàn)的是前三種 channel派继。

  • MemoryChannel 可以實(shí)現(xiàn)高速的吞吐,但是無(wú)法保證數(shù)據(jù)的完整性捻艳。
  • MemoryRecoverChannel 在官方文檔的建議上已經(jīng)建義使用FileChannel來(lái)替換驾窟。
  • FileChannel保證數(shù)據(jù)的完整性與一致性。在具體配置FileChannel時(shí)认轨,建議FileChannel設(shè)置的目錄和程序日志文件保存的目錄設(shè)成不同的磁盤绅络,以便提高效率。


    flume-channel.png

Sink

flume-sink.png

可靠性

在Flume NG中嘁字,可靠性指的是在數(shù)據(jù)流的傳輸過(guò)程中恩急,保證events的可靠傳遞。
在Flume NG中纪蜒,所有的events都保存在Agent的Channel中衷恭,然后被發(fā)送到數(shù)據(jù)流下一個(gè)Agent或者最終的存儲(chǔ)服務(wù)中。當(dāng)且僅當(dāng)它們被保存到下一個(gè)Agent的Channel中纯续,或者被保存到最終的存儲(chǔ)服務(wù)中随珠。這就是Flume 提供數(shù)據(jù)流中點(diǎn)到點(diǎn)的可靠性保證的最基本的單跳消息語(yǔ)義傳遞灭袁。
首先,Agent間的事務(wù)交換窗看。Flume使用事務(wù)的辦法來(lái)保證events的可靠傳遞茸歧。Source和Sink分別被封裝在事務(wù)中,這些事務(wù)由保存event的存儲(chǔ)提供或者由Channel提供显沈。這就保證了event在數(shù)據(jù)流的點(diǎn)對(duì)點(diǎn)傳輸中是可靠的软瞎。在多級(jí)數(shù)據(jù)流中,如下圖构罗,上一級(jí)的Sink和下一級(jí)的Source都被包含在事務(wù)中铜涉,保證數(shù)據(jù)可靠地從一個(gè)Channel到另一個(gè)Channel轉(zhuǎn)移智玻。


flume-transaction.png

下圖A:正常情況下的 events流程遂唧。
下圖B:Agent2 跟central event store失聯(lián),Agent2提交的事務(wù)失敗吊奢,將events緩存起來(lái)盖彭。
下圖C:重新恢復(fù)時(shí),再恢復(fù)失聯(lián)之前的任務(wù)以及后續(xù)的events發(fā)送页滚。


flume-trans-example.png

高可用

如下圖所示召边,Agent1中,只有要有一個(gè)Sink組件可用裹驰,events就被傳遞到下一個(gè)組件隧熙,如果一個(gè)Sink能成功處理Event(事務(wù)完成),則會(huì)加入到一個(gè)Pool中幻林, 否則贞盯,則會(huì)從Pool中移除,并計(jì)算失敗次數(shù)沪饺,設(shè)置懲罰因子躏敢。所以,如果某一個(gè)Flow中某一層的Agent只有一個(gè)整葡,或者全部宕機(jī)件余,可能導(dǎo)致這些Events被存儲(chǔ)在流水線上最后一個(gè)存活節(jié)點(diǎn)。


flume-available.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末遭居,一起剝皮案震驚了整個(gè)濱河市啼器,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俱萍,老刑警劉巖端壳,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鼠次,居然都是意外死亡更哄,警方通過(guò)查閱死者的電腦和手機(jī)芋齿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)成翩,“玉大人觅捆,你說(shuō)我怎么就攤上這事÷榈校” “怎么了栅炒?”我有些...
    開(kāi)封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)术羔。 經(jīng)常有香客問(wèn)我赢赊,道長(zhǎng),這世上最難降的妖魔是什么级历? 我笑而不...
    開(kāi)封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任释移,我火速辦了婚禮,結(jié)果婚禮上寥殖,老公的妹妹穿的比我還像新娘玩讳。我一直安慰自己,他們只是感情好嚼贡,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布熏纯。 她就那樣靜靜地躺著,像睡著了一般粤策。 火紅的嫁衣襯著肌膚如雪樟澜。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天叮盘,我揣著相機(jī)與錄音秩贰,去河邊找鬼。 笑死熊户,一個(gè)胖子當(dāng)著我的面吹牛萍膛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嚷堡,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蝗罗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蝌戒?” 一聲冷哼從身側(cè)響起串塑,我...
    開(kāi)封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎北苟,沒(méi)想到半個(gè)月后桩匪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡友鼻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年傻昙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了闺骚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妆档,死狀恐怖僻爽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贾惦,我是刑警寧澤胸梆,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站须板,受9級(jí)特大地震影響碰镜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜习瑰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一绪颖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杰刽,春花似錦菠发、人聲如沸王滤。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雁乡。三九已至第喳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踱稍,已是汗流浹背曲饱。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留珠月,地道東北人扩淀。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像啤挎,于是被迫代替她去往敵國(guó)和親驻谆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 背景 Flume是由Cloudera公司開(kāi)源的庆聘,分布式可靠胜臊,高可用的系統(tǒng),它能夠?qū)⒉煌瑪?shù)據(jù)源的海量日志數(shù)據(jù)進(jìn)行高...
    Bloo_m閱讀 1,099評(píng)論 0 0
  • 1 .背景 flume是由cloudera軟件公司產(chǎn)出的可分布式日志收集系統(tǒng)伙判,后與2009年被捐贈(zèng)了apache軟...
    晴天哥_王志閱讀 811評(píng)論 0 3
  • 1. Flume簡(jiǎn)介 Apache Flume是一個(gè)分布式的象对、可靠的、可用的宴抚,從多種不同的源收集勒魔、聚集甫煞、移動(dòng)大量日...
    奉先閱讀 4,500評(píng)論 2 5
  • 博客原文 翻譯作品,水平有限冠绢,如有錯(cuò)誤危虱,煩請(qǐng)留言指正。原文請(qǐng)見(jiàn) 官網(wǎng)英文文檔 引言 概述 Apache Flume...
    rabbitGYK閱讀 11,481評(píng)論 13 34
  • 轉(zhuǎn)自http://www.aboutyun.com/thread-8317-1-1.html 問(wèn)題導(dǎo)讀: 1.Fl...
    大時(shí)代_f479閱讀 2,100評(píng)論 0 6