Flume學習筆記 --- Flume架構介紹

1.數據流模型:

 

 

Flume event 被定義爲具有字節有效負載和可選字符串屬性集的數據流單元。Flume代理是一個(JVM)進程,它繼承 event 從外部數據源流向下一個目標(跳躍hop)的組件。

Flume source 消耗由外部源(如web服務器)傳遞給它的event。外部source以目標Flume source識別的格式向Flume發送事件。

例如:Avro Flume源可以用於從Avro客戶端或從Avro接收器發送事件的流中的其他Flume agent接收Avro event。可以使用Thrift Flume Source定義類似的流程,以接受來自Thrift Sink 或者Flume Thrift Rpc client。

當Flume源接收事件時,它將其存儲到一個或多個channel。該channel是一個被動存儲器,可以保存event直道它被Flume接收器消費。

文件通道就是一個例子。它由本地文件系統支持,接收器從通道中移除事件並將其放入外部存儲庫(如HDFS(通過Flume HDFS接收器))或將其轉發到流中下一個Flume agent。

給定Agent中的source和sink與channel中的所有事件異步運行。

 

2.複雜的流:

Flume允許用戶構建多跳multi-hop流,其中事件在到達最終目的地之前經過多個agent。 它還允許fan-in和fan-out,上下文路由和故障跳躍的備份路由(故障轉移)。

 

3.可靠性:

Event 在每個agent中channel中,然後將evnet傳遞到流中的下一個agent或者終端存儲庫(HDFS)。只有將event存儲在下一個agent的channel或者終端存儲庫後(被消費後),纔會從channel中刪除。這個就是Flume中的單跳消息傳遞語義如何提供流的end-to-end端到端的可靠性。

Flume使用事物(transactional)方法來保證event的可靠傳遞。source與sink分別在事務中封裝了由信道提供的事務中放置或提供的事件的storafe/retrieval。

這可以確保event set 在流中從一個point-to-point的可靠傳遞。在多跳流的情況下,來自前一跳的sink和來自下一跳source都運行其事務以確保數據安全地存儲在下一跳的信道中。

 

4.可恢復性:

當該channel管理從故障中恢復時,events留存channel中。Flume支持由本地文件系統支持的持久化的channel。還有一個內在通道,它只是將事件存儲在內存中的隊列中,

這更快,但是當agent進程死亡時仍留在內存通道中的任何事件都無恢復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章