【图文详细 】Flume 数据采集组件—— 体系结构/核心组件

版权声明:版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/qq_42246689/article/details/84898392

4、Flume 体系结构/核心组件 

4.1、概述 
Flume 的数据流由事件(Event)贯穿始终。事件是 Flume 的基本数据单位,它携带日志数据(字 节数组形式)并且携带有头信息,这些 Event 由 Agent 外部的 Source 生成,当 Source 捕获事 件后会进行特定的格式化,然后 Source 会把事件推入(单个或多个)Channel 中。你可以把 Channel 看作是一个缓冲区,它将保存事件直到 Sink 处理完该事件。Sink 负责持久化日志或 者把事件推向另一个 Source。

Flume 以 agent 为最小的独立运行单位。

一个 agent 就是一个 JVM。

单 agent 由 Source、Sink 和 Channel 三大组件构成。

如下图: 

4.2、Flume 三大核心组件 

Event

    Event 是 Flume 数据传输的基本单元。

    Flume 以事件的形式将数据从源头传送到最终的目的地。

    Event 由可选的 header 和载有数据的一个 byte array 构成。

    载有的数据度 flume 是不透明的。

    Header 是容纳了 key-value 字符串对的无序集合,key 在集合内是唯一的。   

    Header 可以在上下文路由中使用扩展 

Client

    Client 是一个将原始 log 包装成 events 并且发送他们到一个或多个 agent 的实体

    目的是从数据源系统中解耦 Flume

    在 Flume 的拓扑结构中不是必须的。

    Client 实例

        flume log4j Appender

        可以使用 Client SDK(org.apache.flume.api)定制特定的 Client 
 
Agent

    一个 Agent 包含 source,channel,sink 和其他组件。

    它利用这些组件将 events 从一个节点传输到另一个节点或最终目的地

    agent 是 flume 流的基础部分。

    flume 为这些组件提供了配置,声明周期管理,监控支持。 
 
Source

    Source 负责接收 event 或通过特殊机制产生 event,并将 events 批量的放到一个或多个 
 
Channel

    包含 event 驱动和轮询两种类型。

    不同类型的 Source

        与系统集成的 Source:Syslog,Netcat,监测目录池

        自动生成事件的 Source:Exec

        用于 Agent 和 Agent 之间通信的 IPC source:avro,thrift source 必须至少和一个 channel 关联 
 
Agent 之 Channel

    Channel 位于 Source 和 Sink 之间,用于缓存进来的 event

    当 sink 成功的将 event 发送到下一个的 channel 或最终目的 event 从 channel 删除

    不同的 channel 提供的持久化水平也是不一样的

        Memory channel:volatile(不稳定的)

        File Channel:基于 WAL(预写式日志 Write-Ahead logging)实现

        JDBC channel:基于嵌入式 database 实现

    channel 支持事务,提供较弱的顺序保证

    可以和任何数量的 source 和 sink 工作 
 
Agent 之 Sink

    Sink 负责将 event 传输到吓一跳或最终目的地,成功后将 event 从 channel 移除

    不同类型的 sink

        存储 event 到最终目的地终端 sink,比如 HDFS,HBase

        自动消耗的 sink 比如 null sink 

        用于 agent 间通信的 IPC:sink:Avro

        必须作用于一个确切的 channel 
 
Iterator

     作用于 Source,按照预设的顺序在必要地方装饰和过滤 events 
 
Channel Selector

    允许 Source 基于预设的标准,从所有 channel 中,选择一个或者多个 channel 
 
Sink Processor

    多个 sink 可以构成一个 sink group     sink processor 可以通过组中所有 sink 实现负载均衡 也可以在一个 sink 失败时转移到另一个 
 

4.3、Flume 经典部署方案 

猜你喜欢

转载自blog.csdn.net/qq_42246689/article/details/84898392
今日推荐