flume在下圖的架構中因sink宕機或其它原因導致sink不能消費可能會出現的問題
前提條件:channel為memory channel,channel selector為replicating
一、架構圖講解
上圖的架構是通過乙個source把資料接過來,然後放到兩個管道裡面(同乙份資料在每個管道裡面都放乙份replicating channel selector),每個管道分別放到不同的sink裡面。例如sink1放到hdfs裡面用來離線計算,sink2放到kafka裡面用來實時計算。
注:乙個source放到多個channe裡面需要用到channel selector,channel selector有兩種方式:一種是replicating ,另一種是multiplexing,本篇部落格我們講解的是使用replicating時產生的問題,channel selector不是本篇部落格重點 ,在此不做過多講解。
replicating :會將source過來的events發往所有channel;
multiplexing:可以選擇每個event該發往哪些channel;
二、當某個sink不能消費時產生的影響
當某個sink不能消費時產生的影響和source先發往哪個channel裡面有關係,下面分別介紹先發往不同的channel產生的影響
1、source先發channel1,再發channel2
當sink1不能消費時,sink1有可能會丟失記憶體中的資料,sink2不會丟失記憶體中的資料;但當channel1裝滿時,channel2也將不會再收到資料,導致sink2不能再繼續接受資料。(通俗點說,當sink1因為某種原因不能消費時,sink1有可能會丟數,sink2不會丟數,但sink2也不能再收到資料了)
當sink2不能消費時,sink1不會丟失記憶體中的資料,但sink1有可能產生大量的重複資料,sink2有可能會丟失記憶體中的資料。
2、source先發channel2,再發channel1
當sink1不能消費時,sink1有可能會丟失記憶體中的資料,sink2不會丟數記憶體中的資料,但sink2有可能產生大量的重複資料。
當sink2不能消費時,sink1不會丟失記憶體中的資料,但sink1也不能繼續接受資料了,sink2有可能會丟失記憶體中的資料。
三、總結
source先發往channel的sink不能正常消費資料時,該channel所對應的sink有可能會丟失記憶體中的資料;其它channel所對應的sink不會丟失記憶體中資料,但也無法 繼續消費了。source後發往channel的sink不能正常消費時,該channel所對應的sink有可能會丟失記憶體中的資料;其它channel所對應的sink不會丟失記憶體中的資料, 但是有可能產生大量重複的資料。
注:source發往channel的順序不可以指定。
Flume學習筆記(一)Flume 組成架構
本文主要記錄我在學習 flume 過程中的一些知識的整理與記錄,預計會做成乙個系列來梳理一下 flume 中的知識,本篇的主要內容為 flume 的組成架構,文中如有疏漏與不足歡迎指正!flume 是 cloudera 提供的乙個高可用的,高可靠的,分布式的海量日誌採集 聚合和傳輸的系統。flume...
Flume學習筆記
agent1.sources source1 agent1.sinks sink1 agent1.channels channel1 agent1.sources source1.channels channel1 agent1.sinks sink1.channel channel1 agent1...
Flume學習筆記
一,flume概述 flume是乙個分布式,可靠的,高可用的海量日誌採集,聚合和傳輸系統。flume的作用 支援在日誌系統中定製各類資料的傳送方,用於收集資料 同時,flume提供對資料進行簡單處理,並寫到各資料的接受方 比如文字,hdfs,hbase等 的功能。二,組成 1 flume分布式系統中...