Apache Flume 架構



下圖描述了 Flume 的基本架構。如圖所示,**資料生成器**(例如 Facebook、Twitter)生成資料,這些資料由在其上執行的單個 Flume **代理**收集。之後,**資料收集器**(也是一個代理)從代理收集資料,這些資料被聚合並推送到集中式儲存,例如 HDFS 或 HBase。

Flume Architecture

Flume 事件

**事件**是 **Flume** 內部傳輸資料的基本單元。它包含一個位元組陣列有效負載,該有效負載將與可選的標頭一起從源傳輸到目標。典型的 Flume 事件將具有以下結構:

Flume Event

Flume 代理

**代理**是 Flume 中的獨立守護程序(JVM)。它從客戶端或其他代理接收資料(事件),並將其轉發到下一個目標(接收器或代理)。Flume 可能有多個代理。下圖表示一個 **Flume 代理**

Flume Agent

如圖所示,Flume 代理包含三個主要元件,即 **源**、**通道**和 **接收器**。

**源**是代理的一個元件,它從資料生成器接收資料,並以 Flume 事件的形式將其傳輸到一個或多個通道。

Apache Flume 支援多種型別的源,每個源都從指定的 資料生成器接收事件。

**示例** - Avro 源、Thrift 源、Twitter 1% 源等。

通道

**通道**是一個臨時儲存區,它從源接收事件並緩衝它們,直到接收器使用它們。它充當源和接收器之間的橋樑。

這些通道是完全事務性的,它們可以與任意數量的源和接收器一起工作。

**示例** - JDBC 通道、檔案系統通道、記憶體通道等。

接收器

**接收器**將資料儲存到像 HBase 和 HDFS 這樣的集中式儲存中。它從通道消費資料(事件),並將其傳遞到目標。接收器的目標可能是另一個代理或中央儲存。

**示例** - HDFS 接收器

**注意** - Flume 代理可以有多個源、接收器和通道。我們在本教程的 Flume 配置章節中列出了所有受支援的源、接收器和通道。

Flume 代理的其他元件

我們上面討論的是代理的基本元件。除此之外,我們還有一些其他元件在將事件從資料生成器傳輸到集中式儲存中起著至關重要的作用。

攔截器

攔截器用於修改/檢查在源和通道之間傳輸的 Flume 事件。

通道選擇器

這些用於確定在有多個通道的情況下選擇哪個通道來傳輸資料。通道選擇器有兩種型別:

  • **預設通道選擇器** - 這些也稱為複製通道選擇器,它們會複製每個通道中的所有事件。

  • **多路複用通道選擇器** - 這些根據該事件標頭中的地址決定要傳送事件的通道。

接收器處理器

這些用於從選定的接收器組呼叫特定接收器。這些用於為接收器建立故障轉移路徑或跨多個接收器從通道負載均衡事件。

廣告
© . All rights reserved.