Flume 核心组件

Flume是一个数据收集系统,其核心组件包括Event、Source、Channel和Sink。Event是基本数据单位,携带日志数据和头信息。Source捕获事件并推入Channel,作为缓冲区保存事件。Sink负责将事件持久化或转发。Agent由Source、Sink和Channel组成,提供数据传输和管理。Channel类型包括Memory、File和JDBC,提供不同程度的持久化。Sink则将事件传输到下一跳或最终目的地,如HDFS、HBase。Channel Selector和Sink Processor用于管理和调度事件的流向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        Flume 的数据流由事件(Event)贯穿始终。事件是 Flume 的基本数据单位,它携带日志数据(字

节数组形式)并且携带有头信息,这些 Event 由 Agent 外部的 Source 生成,当 Source 捕获事件后

会进行特定的格式化,然后 Source 会把事件推入(单个或多个)Channel 中。你可以把Channel 看

作是一个缓冲区,它将保存事件直到 Sink 处理完该事件。Sink 负责持久化日志或者把事件推向另

一个 Source。

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

一个 agent 就是一个 JVM。

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

如下图所示

 

组件 功能
Agent使用 JVM 运行 Flume。每台机器运行一个 agent,但是可以在一个
agent 中包含多个 sources 和 sinks。
Client 生产数据,运行在一个独立的线程。
Source 从 Client 收集数据,传递给 Channel。
Sink 从 Channel 收集数据,运行在一个独立线程。
Channel 连接 sources 和 sinks,这个有点像一个队列。
Events 可以是日志记录、avro 对象等。

 


 

 

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

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 失败时转移到另一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值