天天看點

大資料技術之Flume

大資料技術之flume

flume是cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統。flume基于流式架構,靈活簡單。

大資料技術之Flume

flume組成架構如圖1-1,圖1-2所示:

大資料技術之Flume

圖1-1 flume組成架構

大資料技術之Flume

圖1-2 flume組成架構詳解

下面我們來詳細介紹一下flume架構中的元件。

agent是一個jvm程序,它以事件的形式将資料從源頭送至目的,是flume資料傳輸的基本單元。

agent主要有3個部分組成,source、channel、sink。

source是負責接收資料到flume agent的元件。source元件可以處理各種類型、各種格式的日志資料,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。

channel是位于source和sink之間的緩沖區。是以,channel允許source和sink運作在不同的速率上。channel是線程安全的,可以同時處理幾個source的寫入操作和幾個sink的讀取操作。

flume自帶兩種channel:memory channel和file channel。

memory channel是記憶體中的隊列。memory channel在不需要關心資料丢失的情景下适用。如果需要關心資料丢失,那麼memory channel就不應該使用,因為程式死亡、機器當機或者重新開機都會導緻資料丢失。

file channel将所有事件寫到磁盤。是以在程式關閉或機器當機的情況下不會丢失資料。

sink不斷地輪詢channel中的事件且批量地移除它們,并将這些事件批量寫入到存儲或索引系統、或者被發送到另一個flume agent。

sink是完全事務性的。在從channel批量删除資料之前,每個sink用channel啟動一個事務。批量事件一旦成功寫出到存儲系統或下一個flume agent,sink就利用channel送出事務。事務一旦被送出,該channel從自己的内部緩沖區删除事件。

sink元件目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定義。

傳輸單元,flume資料傳輸的基本單元,以事件的形式将資料從源頭送至目的地。

flume的拓撲結構如圖1-3、1-4、1-5和1-6所示:

大資料技術之Flume

圖1-3 flume agent連接配接

大資料技術之Flume

圖1-4 單source,多channel、sink

大資料技術之Flume

圖1-5 flume負載均衡

大資料技術之Flume

圖1-6 flume agent聚合

大資料技術之Flume

繼續閱讀