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.