Flume 事務和內部原理

2022-07-08 07:03:10 字數 1270 閱讀 4296

flume使用兩個獨立的事務分別負責從soucrce到channel,以及從channel到sink的事件傳遞。

在source到channel之間的叫put事務,在channel到sink之間的叫take事務。

事務兩個特性就是:成功了提交,失敗了回滾。

從source到channel過程中,資料在flume中會被封裝成event物件,多個event被放到乙個事務中,

然後把這個包含events的事務放到channel中。

然後在processevent和processeventbatch(listevents)

public void processevent(event event)

list requiredchannels = this.selector.getrequiredchannels(event); // 提交到channel 選擇器

for (iterator localiterator = requiredchannels.iterator(); localiterator.hasnext(); ) catch (throwable t) if ((t instanceof channelexception))

throw new channelexception("unable to put event on required channel: " + reqchannel, t);

}finally

}channel reqchannel;

list optionalchannels = this.selector.getoptionalchannels(event);

for (channel optchannel : optionalchannels) catch (throwable t)

finally }}}

Flume Agent 內部原理和事務

1 channelselector channelselector 的作用就是選出 event 將要被發往哪個 channel。其共有兩種型別,分別是replicating 複製 和multiplexing 多路復用 replicatingselector 會將同乙個 event 發往所有的 cha...

flume筆記(二)之Agent內部原理

首先channelselector的作用是將event 資料傳給哪乙個channel。其中它有兩種選擇策略,分別是 replicating 複製 和 multiplexing 多路復用 replicating 複製 會將同乙個 event 資料發往所有的 channel,每乙個channel都發一遍...

Flume事務機制

docommit檢查channel中是否還有足夠的空間來容納putlist中的所有資料,如果有docommit就成功了,putlist中的所有資料就會進入到channel中並清空putlist中的資料。如果檢測的時候發現channel中的空間不足以容納putlist中的資料的時候,事務就會進行回滾 ...