Flume 概述
Flume 概念Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单,主要用于将流数据(日志数据)从各种Web服务器复制到HDFS。Flume 组成架构Agent一个 代理 是一个独立的守护进程(JVM)在Flume。它从客户端或其他代理接收数据(事件),并将其转发到下一个目标(接收器或代理)。Agen...

Flume 概念
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单,主要用于将流数据(日志数据)从各种Web服务器复制到HDFS。

Flume 组成架构

Agent
一个 代理 是一个独立的守护进程(JVM)在Flume。它从客户端或其他代理接收数据(事件),并将其转发到下一个目标(接收器或代理)。

Agent主要有3个部分组成,Source、Channel、Sink。
Source
Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。
Channel
Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。
Flume自带两种Channel:Memory Channel和File Channel。
Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。
Sink
Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。
Sink是完全事务性的。在从Channel批量删除数据之前,每个Sink用Channel启动一个事务。批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就利用Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除事件。
Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、null、HBase、solr、自定义。
附加组件
上面是Agent的原始组件。除此之外,我们还有一些组件在将事件从数据生成器传输到集中式存储中起着至关重要的作用。
拦截器
拦截器用于改变/检查在源和通道之间传输的Flume事件。
Channel 选择器
用于确定在多个通道的情况下选择哪个通道来传输数据。有两种类型的通道选择器
默认通道选择器 - 这些 通道选择器 也称为复制通道选择器,它们复制每个通道中的所有事件。
多路复用通道选择器 - 它们根据该事件标题中的地址决定发送事件的通道。
接收处理器
用于从所选的接收器组中调用特定接收器。这些用于为接收器创建故障转移路径,或者通过通道为多个接收器创建负载均衡事件。
Event
传输单元,Flume数据传输的基本单元,以事件的形式将数据从源头送至目的地。典型的Flume事件将具有以下结构 -

Flume 拓扑结构
Flume Agent连接

单source,多channel、sink

Flume Agent聚合

Flume负载均衡

参考
更多推荐

所有评论(0)