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