Flume 体系结构

  • 架构

    下图描述了Flume的基本体系结构。如图所示, data generators(例如Facebook,Twitter)生成的数据由运行在其上的各个Flume代理收集。此后,data collector(也是代理)从代理收集数据,这些数据被汇总并推送到集中存储(例如HDFS或HBase)中。
    flume
  • Flume 事件(event)

    一个事件是Flume内部传送的数据的基本单元。它包含一个字节数组的有效负载,该负载将与可选的标头一起从源传输到目的地。典型的Flume事件将具有以下结构-
    flume
  • Flume 代理(Agent)

    Flume中的一个代理是一个独立的守护进程(JVM)。它从客户端或其他代理接收数据(事件),并将其转发到下一个目的地(接收器或代理)。Flume可能具有多个代理。下图表示Flume Agent
    flume
    如图所示,Flume Agent包含三个主要组件,即source,channel和sink。
    资源(source)
    source 是代理(Agent)的组件,它从数据生成器(data generators)接收数据,并以Flume事件(event)的形式将数据传输到一个或多个通道(channel)。
    Apache Flume支持几种类型的源,每个源都从指定的数据生成器接收事件。
    例如:Avro source、Thrift source、twitter 1% source等。
    渠道(channel)
    channel通道是一个暂态存储,它从源接收事件并缓冲它们,直到它们被接收器使用。它充当了源和汇之间的桥梁。
    这些通道是完全事务性的,它们可以处理任意数量的源和接收。
    例如−JDBC通道、文件系统通道、内存通道等。
    Sink
    接收器将数据存储到HBase和HDFS等集中存储中。它使用来自通道的数据(事件)并将其传递到目的地。接收器的目的地可能是另一个代理或中央存储。
    示例-HDFS接收器
    - Flume可以具有多个源,slik和通道(channel)。我们已在本教程的Flume配置章节中列出了所有受支持的源,接收器,通道。
  • Flume Agent的其他组件

    上面讨论的是代理的原始组件。除此之外,我们还有其他一些组件在将事件从数据生成器传输到集中存储中起着至关重要的作用。
    拦截器
    拦截器用于更改/检查在源和通道之间传输的Flume事件(数据)。
    channel选择器
    这些用于确定在有多个通道的情况下要选择哪个通道来传输数据。通道选择器有两种类型-
    • 默认通道选择器-这些也称为复制通道选择器,它们复制每个通道中的所有事件。
    • 复用通道选择器-这些通道选择器根据事件标题中的地址来决定要发送事件的通道。
    Sink处理器
    这些用于从选定的接收器组中调用特定的接收器。这些用于为您的接收器创建故障转移路径或跨通道的多个接收器创建负载平衡事件。