flume ng架构
flume ng架构
event
event是flume数据传输的基本单元
flume以事件的形式将数据从源头传送到最终的目的
event由可选的header和载有数据的一个byte array构成
client
client是一个将原始log包装成events并且发送它们到一个或多个agent的实体。
目的是从数据源系统中解耦flume
在flume的拓扑结构中不是必须的
agent
一个agent包含source, channel, sink和其他组件
它利用这些组件将events从一个节点传输到另一个节点或最终目的
agent是flume流的基础部分
flume为这些组件提供了配置、生命周期管理、监控支持
agent之source
source负责接收event或通过特殊机制产生event,并将events批量的放到一个或多个channel
包含event驱动和轮询2种类型
不同类型的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
interceptor
作用于source,按照预设的顺序在必要地方装饰和过滤events
channel selector
允许source基于预设的标准,从所有channel中,选择一个或多个channel
sink processor
多个sink可以构成一个sink group
sink processor可以通过组中所有sink实现负载均衡
也可以在一个sink失败时转移到另一个














网友评论