下图描绘了Flume的基本架构.如图所示,数据生成器(如Facebook,Twitter)生成的数据由在其上运行的各个Flume 代理收集.此后,数据收集器(也是代理)收集来自代理的数据,这些数据被聚合并推送到集中存储,例如HDFS或HBase.
事件是 Flume 内传输数据的基本单位.它包含一个字节数组的有效负载,它将从源传输到目标,并附带可选的头.典型的Flume事件将具有以下结构 :
代理是Flume中的独立守护进程(JVM).它从客户端或其他代理接收数据(事件),并将其转发到下一个目标(接收器或代理).水槽可能有多个药剂.下图表示 Flume Agent
如图所示,Flume Agent包含三个主要组件,即源,通道和接收器.
来源是代理的组件,它从数据生成器接收数据并将其传输到数据生成器中的一个或多个通道. Flume事件的形式.
Apache Flume支持几种类型的源,每个源从指定的数据生成器接收事件.
示例 : Avro来源,Thrift来源,Twitter 1%来源等.
频道是一个临时商店,收到来自源的事件并缓冲它们直到它们被接收器消耗.它充当了源和接收器之间的桥梁.
这些通道是完全事务性的,它们可以与任意数量的源和接收器一起工作.
示例 : JDBC通道,文件系统通道,内存通道等
接收器将数据存储到集中存储中像HBase和HDFS.它消耗来自通道的数据(事件)并将其传送到目的地.接收器的目的地可能是另一个代理商或中央商店.
示例 : HDFS接收器
注意 : 水槽剂可具有多个源,汇和通道.我们在本教程的Flume配置章节中列出了所有支持的源,接收器和通道.
我们拥有什么上面讨论的是代理的原始组件.除此之外,我们还有一些组件在将事件从数据生成器传输到集中存储中起着至关重要的作用.
拦截器用于改变/检查在源和通道之间传输的水槽事件.
这些用于确定哪个通道选择在多个频道的情况下传输数据.有两种类型的频道选择器和减号;
默认频道选择器 : 这些也称为复制频道选择器,它们复制每个频道中的所有事件.
多路复用频道选择器 : 这些决定了根据该事件标题中的地址发送事件的频道.
这些用于从所选的接收器组中调用特定接收器.这些用于为您的接收器创建故障转移路径,或者通过通道为多个接收器创建负载均衡事件.