Flume Sink組氛赐、Sink處理器

前言

Sink運行器(Sink Runner)運行一個Sink組(Sink Group)述么,Sink組可以含有一個或多個Sink籍琳。如果組中只存在一個Sink菲宴,那么沒有組將會更有效率。Sink運行器僅僅是一個詢問Sink組(或Sink)來處理下一批事件的線程趋急。每個Sink組有一個Sink處理器(Sink Processor)喝峦,處理器選擇組中的Sink之一去處理下一個事件集合。每個Sink只能從一個Channel獲取數(shù)據(jù)(一個Sink只能有一個Channel)呜达,盡管多個Sink可以從同一個Channel獲取數(shù)據(jù)谣蠢。選定的Sink(或如果沒有組,唯一的Sink)從Channel中接受事件,并將事件寫入到下一階段或最終目的地眉踱。

Sink組

Flume配置框架為每個Sink組實例化一個Sink運行器挤忙,來運行Sink組。每個Sink組可以包含任意數(shù)量的Sink谈喳。Sink運行器持續(xù)請求Sink組册烈,要求其中的一個Sink從自己的Channel中讀取事件。Sink組通常用于RPC Sink叁执,在層之間以負(fù)載均衡或故障轉(zhuǎn)移方式發(fā)送數(shù)據(jù)茄厘。

Sink組中的每個Sink必須單獨進行配置。這包括:Sink從哪個Channel讀取谈宛,寫數(shù)據(jù)到哪些主機或者集群次哈。

在理想情況下,如果Sink組中建立了幾個Sink吆录,所有的Sink將從相同的Channel讀取窑滞,這將有利于在當(dāng)前層以合理的速度清除數(shù)據(jù),確保將要被發(fā)送到多臺集群的數(shù)據(jù)恢筝,以一種支持負(fù)載均衡和故障轉(zhuǎn)移的方式進行發(fā)送哀卫。

Sink處理器

Sink處理器決定任何時候哪個Sink是活躍的組件。

Sink處理器與Sink運行器不同撬槽。sink運行器實際上是運行sink的此改,而sink處理器決定了哪個sink應(yīng)該從自己的channel中拉取事件。
Flume自帶了兩類Sink處理器:load-balancing Sink處理器和failover Sink處理器

Load-Balancing Sink處理器

Load-Balancing Sink 處理器從所有的Sink中選擇一個Sink侄柔,處理來自Channel的事件共啃。

意義所在:
假設(shè)第一層100個agent,第二層有4個agent暂题。第一層每個agent將有4個avro sink用來推送數(shù)據(jù)到第二層的每個agent移剪。該工作正常運行,直到其中第二層的一個agent失敗薪者。此時纵苛,配置發(fā)送數(shù)據(jù)的sink 將不會發(fā)送任何數(shù)據(jù),直到第二層失敗的agent重新上線言津。
這種情況下攻人,sink耗盡了agent上的幾個線程,浪費了CPU周期悬槽,直到第二層agent啟動并運行贝椿,通過創(chuàng)建事件的事務(wù)且回滾。該sink也會給channel造成額外的壓力陷谱。

案例

為了避免這樣的問題,sink組使用load-balancing sink處理器是一個好主意。它將從sink組所有的sink中選擇一個sink烟逊,處理來自channel的事件渣窜。

如果Sink寫入到一個失敗的Agent或者速度太慢的Agent,會導(dǎo)致超時宪躯,Sink處理器會選擇另一個Sink寫數(shù)據(jù)乔宿。

Sink處理器可以配置將失敗的Sink加入黑名單,回退時間以指數(shù)方式增長直到達(dá)到上限值访雪。這能確保相同的Sink不會循環(huán)重復(fù)嘗試且不浪費資源详瑞,直到回退時間過期。

參數(shù) 描述
processor.sinks 空格分割的sink列表
processor.type load_balance / failover
processor.selector 默認(rèn)round_robin臣缀,有round_robin和random兩種方式
processor.backoff 默認(rèn)false,失敗的sink是否啟用回退
processor.selector.maxTimeOut 默認(rèn)30000坝橡,該時間之后黑名單時間周期不再增長

Sink選擇的順序可以為random或者round-robin。如果順序被設(shè)置為random精置,那么將隨機從Sink組的Sink中選擇一個计寇,用來從自己的Channel中移除事件并將它們寫出。round-robin選項使Sink以循環(huán)的方式被選擇:每個選擇循環(huán)調(diào)用定義Sink組中指定順序Sink的process方法脂倦。

配置示例

a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff = true
a1.sinkgroups.g1.processor.selector = random

該配置意味著番宁,在任何時候每個agent只有一個sink寫數(shù)據(jù)±底瑁可以通過添加多個有相似配置的load-balancing sink處理器的sink組進行修改蝶押。

Failover Sink處理器

Failover Sink處理器從Sink組中以優(yōu)先級的順序選擇Sink。擁有最高優(yōu)先級的Sink先寫數(shù)據(jù)直到它失敗火欧,然后選擇組中其他Sink中擁有最高優(yōu)先級的Sink棋电。這能確保當(dāng)沒有失敗時,每臺機器上只有一個Sink寫入到第二層的所有Agent布隔。

同時离陶,這意味著,即使已經(jīng)失敗的最高優(yōu)先級的sink恢復(fù)了衅檀,F(xiàn)ailover Sink處理器也不會讓寫入該Sink激活招刨,直到目前活躍的sink遇到一個錯誤。

參數(shù) 描述
processor.sinks 空格分割的sink列表
processor.type load_balance / failover
processor.priority.<sinkName> sink的優(yōu)先級
processor.maxpenalty 默認(rèn)30000哀军,失敗Sink的最大回退時間
failover sink 處理器工作流程

配置示例

a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 5
a1.sinkgroups.g1.processor.priority.k2 = 10
a1.sinkgroups.g1.processor.maxpenalty = 10000

Load-Balancing Sink和Failover Sink處理器的區(qū)別

案例

從上面的例子中我們對比他們的區(qū)別沉眶,Load-Balancing Sink處理器是將左邊4個Sink作為一組,這一組的每個sink的目的地都是不一樣的杉适,每次根據(jù)processor.selector值配置的方式去選擇哪個sink去發(fā)送事件谎倔。

Failover Sink處理器還是將多個sink放到一個sink組中,每次只有一個sink堆外發(fā)送數(shù)據(jù)猿推,優(yōu)先選擇sink的優(yōu)先級最大的去發(fā)送片习,然后往死里用捌肴,直到用掛了,再抬走換下一個藕咏。因此状知,F(xiàn)ailover Sink沒有負(fù)載平衡處理。只是做到容災(zāi)孽查。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饥悴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子盲再,更是在濱河造成了極大的恐慌西设,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件答朋,死亡現(xiàn)場離奇詭異贷揽,居然都是意外死亡,警方通過查閱死者的電腦和手機绿映,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門擒滑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叉弦,你說我怎么就攤上這事丐一。” “怎么了淹冰?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵库车,是天一觀的道長。 經(jīng)常有香客問我樱拴,道長柠衍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任晶乔,我火速辦了婚禮珍坊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘正罢。我一直安慰自己阵漏,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布翻具。 她就那樣靜靜地躺著履怯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裆泳。 梳的紋絲不亂的頭發(fā)上叹洲,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機與錄音工禾,去河邊找鬼运提。 笑死蝗柔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的民泵。 我是一名探鬼主播诫咱,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洪灯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起竟痰,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤签钩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后坏快,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铅檩,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年莽鸿,在試婚紗的時候發(fā)現(xiàn)自己被綠了昧旨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡祥得,死狀恐怖兔沃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情级及,我是刑警寧澤乒疏,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站饮焦,受9級特大地震影響怕吴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜县踢,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一转绷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硼啤,春花似錦议经、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亏镰,卻和暖如春扯旷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背索抓。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工钧忽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留毯炮,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓耸黑,卻偏偏與公主長得像桃煎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子大刊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

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