Apache Flume - 架构


下图描述了 Flume 的基本架构。如图所示,数据生成器(例如 Facebook、Twitter)生成数据,这些数据由运行在其上的各个 Flume代理收集。此后,数据收集器(也是代理)从代理收集数据,并将其聚合并推送到集中式存储(例如 HDFS 或 HBase)中。

水槽架构

水槽事件

事件是Flume内部传输数据的基本单位。它包含字节数组的有效负载,该负载将伴随可选标头从源传输到目的地。典型的 Flume 事件将具有以下结构 -

水槽事件

水槽剂

Agent是Flume的一个独立的守护进程(JVM)。它从客户端或其他代理接收数据(事件)并将其转发到下一个目的地(接收器或代理)。Flume 可能有多个代理。下图表示Flume Agent

水槽剂

如图所示,Flume Agent 包含三个主要组件,即通道接收器

来源

源是 Agent 的组件,它从数据生成器接收数据并以 Flume 事件的形式将其传输到一个或多个通道

Apache Flume 支持多种类型的源,每个源从指定的数据生成器接收事件。

示例- Avro 源、Thrift 源、twitter 1% 源等。

渠道

通道是一个临时存储,它从源接收事件并缓冲它们,直到它们被接收器消耗它充当源和汇之间的桥梁。

这些通道是完全事务性的,并且可以与任意数量的源和接收器配合使用。

示例- JDBC 通道、文件系统通道、内存通道等。

下沉

接收器将数据存储到 HBase 和 HDFS 等集中存储中。它消耗来自通道的数据(事件)并将其传递到目的地。接收器的目的地可能是另一个代理或中央商店。

示例- HDFS 接收器

注意- 一个 Flume Agent 可以有多个源、汇和通道。我们在本教程的 Flume 配置章节中列出了所有支持的源、接收器、通道。

Flume Agent 的附加成分

我们上面讨论的是代理的原始组件。除此之外,我们还有一些组件在将事件从数据生成器传输到集中存储方面发挥着至关重要的作用。

拦截器

拦截器用于更改/检查在源和通道之间传输的水槽事件。

通道选择器

这些用于确定在多个通道的情况下选择哪个通道来传输数据。有两种类型的通道选择器 -

  • 默认通道选择器- 这些也称为复制通道选择器,它们复制每个通道中的所有事件。

  • 多路复用通道选择器- 这些选择器根据事件标头中的地址决定发送事件的通道。

接收器处理器

它们用于调用所选接收器组中的特定接收器。它们用于为您的接收器创建故障转移路径或跨通道的多个接收器负载平衡事件。