Flume概述

孫晨c發表於2020-10-13

Flume定義

Flume是Cloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統。Flume基於流式架構,靈活簡單。
在這裡插入圖片描述

Flume基礎架構

在這裡插入圖片描述

Agent

Agent是一個JVM程式,它以事件的形式將資料從源頭送至目的。
Agent主要有3個部分組成,SourceChannelSink

Source

Source是負責接收資料到Flume Agent的元件。Source元件可以處理各種型別、各種格式的日誌資料,包括avro、thrift、exec、jms、spooling directorynetcat、sequence generator、syslog、http、legacy。

Sink

Sink不斷地輪詢Channel中的事件且批量地移除它們,並將這些事件批量寫入到儲存或索引系統、或者被髮送到另一個Flume Agent。
Sink元件目的地包括hdfsloggeravro、thrift、ipc、fileHBase、solr、自定義。

Channel

Channel是位於Source和Sink之間的緩衝區。因此,Channel允許Source和Sink運作在不同的速率上。Channel是執行緒安全的,可以同時處理幾個Source的寫入操作和幾個Sink的讀取操作。
Flume自帶兩種Channel:Memory ChannelFile Channel

  • Memory Channel是記憶體中的佇列。Memory Channel在不需要關心資料丟失的情景下適用。如果需要關心資料丟失,那麼Memory Channel就不應該使用,因為程式死亡、機器當機或者重啟都會導致資料丟失。
  • File Channel將所有事件寫到磁碟。因此在程式關閉或機器當機的情況下不會丟失資料。

Event

傳輸單元,Flume資料傳輸的基本單元,以Event的形式將資料從源頭送至目的地。Event由HeaderBody兩部分組成,Header用來存放該event的一些屬性,為K-V結構,Body用來存放該條資料,形式為位元組陣列。
在這裡插入圖片描述

Flume的核心概念

  • source : 使用者需要根據自己的資料來源的型別,選擇合適的source物件。
  • sink: 使用者需要根據自己的資料儲存的目的地的型別,選擇合適的sink物件。
  • Interceptors(攔截器): 在source將event放入到channel之前,呼叫攔截器對event進行攔截和處理
  • Channel Selectors: 當一個source對接多個channel時,由 Channel Selectors選取channel將event存入。
  • sink processor: 當多個sink從一個channel取資料時,為了保證資料的順序,由sink processor從多個sink中挑選一個sink,由這個sink開始。

相關文章