📅  最后修改于: 2020-12-03 04:45:41             🧑  作者: Mango
下图描述了Flume的基本体系结构。如图所示,数据生成器(例如Facebook,Twitter)生成的数据由运行在它们上的各个Flume代理收集。此后,数据收集器(也是代理)从代理收集数据,这些数据被汇总并推送到集中存储(例如HDFS或HBase)中。
事件是Flume内部传输数据的基本单位。它包含字节数组的有效负载,该有效负载将与可选的标头一起从源传输到目的地。典型的Flume事件将具有以下结构-
代理是Flume中的独立守护进程(JVM)。它从客户端或其他代理接收数据(事件),并将其转发到下一个目的地(接收器或代理)。 Flume可能具有多个代理。下图表示Flume Agent
如图所示,Flume Agent包含三个主要组件,即source , channel和sink 。
源是代理程序的组成部分,它从数据生成器接收数据并将其以Flume事件的形式传输到一个或多个通道。
Apache Flume支持多种类型的源,每个源都从指定的数据生成器接收事件。
示例-Avro源,Thrift源,twitter 1%源等
通道是一个瞬态存储,它从源接收事件并对其进行缓冲,直到它们被接收器消耗为止。它充当源和汇之间的桥梁。
这些通道是完全事务性的,可以与任何数量的源和接收器一起使用。
示例-JDBC通道,文件系统通道,内存通道等。
接收器将数据存储到HBase和HDFS等集中存储中。它使用来自通道的数据(事件)并将其传递到目的地。接收器的目的地可能是另一个代理或中央存储。
示例-HDFS接收器
注-槽水剂可以具有多个源,汇和通道。我们已在本教程的Flume配置章节中列出了所有受支持的源,接收器,通道。
上面讨论的是代理的原始组件。除此之外,我们还有其他一些组件在将事件从数据生成器传输到集中存储中起着至关重要的作用。
拦截器用于更改/检查在源和通道之间传输的水槽事件。
这些用于确定在有多个通道的情况下要选择哪个通道来传输数据。通道选择器有两种类型-
默认通道选择器-这些也称为复制通道选择器,它们复制每个通道中的所有事件。
复用通道选择器-这些通道选择器根据事件头中的地址来决定要发送事件的通道。
这些用于从选定的接收器组中调用特定的接收器。这些用于为您的接收器创建故障转移路径或跨通道的多个接收器创建负载平衡事件。