Apache Flume架构


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

Flume建筑

Flume事件

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

Flume事件

Flume Agent

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

Flume Agent

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

资源

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

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

示例 - Avro源,Thrift源,Twitter 1%源等。

渠道

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

这些渠道是完全交易的,可以使用任意数量的来源和接收器。

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

Flume

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

示例 - HDFS接收器

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

Flume Agent的附加组件

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

拦截器

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

频道选择器

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

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

  • 多路复用通道选择器 - 它们根据该事件标题中的地址决定发送事件的通道。

接收处理器

这些用于从所选的接收器组中调用特定接收器。这些用于为接收器创建故障转移路径,或者通过通道为多个接收器创建负载均衡事件。