Flume 架构基础教程文档

收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體

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

Flume 事件

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

Flume 代理

agent 是 Fl​​ume 中的一个独立守护进程 (JVM)。它从客户端或其他代理接收数据(事件)并将其转发到下一个目的地(接收器或代理)。 Flume 可能有多个代理。下图表示一个 Flume Agent
Flume Agent
如图所示,Flume Agent 包含三个主要组件,即 sourcechannelsink

source

source是代理的组件,它从数据生成器接收数据,并以 Flume 事件的形式将其传输到一个或多个通道。
Apache Flume 支持多种类型的源,每个源从指定的数据生成器接收事件。
示例-Avro 源、Thrift 源、twitter 1% 源等

channel

channel 是一个瞬态存储,它从源接收事件并缓冲它们,直到它们被接收器消耗。它充当源头和汇点之间的桥梁。
这些通道是完全事务性的,它们可以与任意数量的源和接收器配合使用。
示例-JDBC 通道、文件系统通道、内存通道等

Flume

A sink 将数据存储到集中存储像 HBase 和 HDFS 这样的资源。它使用来自通道的数据(事件)并将其传送到目的地。接收器的目的地可能是另一个代理或中央商店。
示例-HDFS 接收器
注意-一个Flume代理可以有多个源、接收器和通道。我们在本教程的 Flume 配置章节中列出了所有支持的源、接收器、通道。

Flume Agent 的附加组件

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

Interceptors

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

Channel Selectors

这些用于确定在多个通道的情况下选择哪个通道来传输数据。有两种类型的通道选择器-
Default channel selectors-这些也称为复制通道选择器,它们复制每个通道中的所有事件。 Multiplexing channel selectors-这些选择器根据事件标头中的地址决定发送事件的通道。

Sink Processors

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