Apache Flume – 架构

Apache Flume – 架构


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

水槽架构

水槽事件

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

水槽事件

水槽代理

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

水槽代理

如图所示,Flume Agent 包含三个主要组件,即sourcechannelsink

来源

是从数据生成器,并将其传送接收数据到一个或多个通道在水槽事件的形式的代理的组件。

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

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

渠道

信道是直到它们由汇消耗,其接收从源和它们的缓冲器中的事件的瞬时存储。它充当源和汇之间的桥梁。

这些通道是完全事务性的,它们可以与任意数量的源和接收器一起工作。

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

下沉

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

示例– HDFS 接收器

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

Flume Agent 的附加组件

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

拦截器

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

频道选择器

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

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

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

接收处理器

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁