大數據架構之:Flume


1、 Flume是一個分布式、可靠、和高可用的海量日志聚合的系統,支持在系統中定制各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定制)的能力。

2、一個獨立的Flume進程稱之為Agent,包含組件Source、Channel、Sink Source

 

Flume基礎架構:Flume 可以單節點直接采集數據。  

 

Flume 的內部實現  

 

Event:Event是Flume數據傳輸的基本單元。Flume以Event的形式將數據從源頭傳送到最終目的。

Source:Source負責接收events或通過特殊機制產生events,並將events批量的放到一個或多個Channels。Flume支持文件、消息流等數據源,並在Source部件中將接收到的數據轉換為一個Event。例如Flume支持監聽文件目錄(spooling directory source),當監聽的目錄下新到一個文件,Flume就會將其作為數據源通過Source轉換為Event實時的傳輸走。

Channel:Channel位於Source和Sink之間,用於緩存進來的events,當Sink成功地將events發送到下一跳的channel或最終目的,events從Channel移除。目前Flume支持3種channel memory channel:消息放在內存中,提供高吞吐,但不提供可靠性;可能丟失數據; file channel:對數據持久化;但是配置較為麻煩,需要配置數據目錄和checkpoint目錄;不同的file channel均需要配置一個checkpoint 目錄; jdbc channel:內置的derby數據庫,對event進行了持久化,提供高可靠性;未來取代同樣具有持久特性的file channel

Sink:Sink負責將events傳輸到下一跳或最終目的。Sink支持將數據寫入到離線存儲如HDFS、消息系統如Kafka等。

Interceptor:用於Source的一組攔截器,按照預設的順序在必要地方對events進行過濾和自定義的處理邏輯實現。

Channel Selector允許Source基於預設的規則,從所有Channel中,選擇一個或多個Channel。例如根據話單中的漫游字段,可以將原始話單放到不同的Channel,這樣Sink就可以將數據送到不同的目標系統中。

Channel Selector支持兩種選擇器: 復制Replicating: 一個event被復制到多個channel; 復用Multiplexing: event被路由到特定的channel,即非復制模式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM