FLume概述

概念:

FLume是Cloudera提供的一个高可用,高可靠,分布式的海量的日志采集,聚合,传输系统,FLume支持在日志系统中定制各类数据发送方,用于收集数据。同时,Flume提供对数据进行简单处理,并写到各种数据接收方(可定制)的能力。

设计目标:

   可靠性:end to end(exactly once)

                Store on failure(数据接收方crash时,将数据写到本地,待恢复后,继续发送)

                Best effort(数据发送到接收方后,不会进行确认)

   可管理性:所有Source,Channel和Sink由Agent统一管理,

   可扩展性:Flume采用三层架构,分别为Source,Channel,Sink。每一层均可以水平扩展

Flume能够支持多种数据源并且输出多种数据源,能够支持多种数据格式的数据

FLume概述


发展历程:

   1.09年7月,从Cloudera诞生

   2.10年11月,Cloudera开源了第一个可用版本0.9.2,0.9.x这个系列的版本也被称为FLume-OG

   3.11年10月22号,完成了Flume-728,对Flume进行了里程碑的改动:重构核心组件,核心配置,以及代码架构,重构后的版本统称为Flume NG。

    4.12年7月,Flume1.0诞生,至此Flume—Ng第一个版本诞生

FLume-NG相对于FLume—OG有以下的变化:

  核心组件变化:Flume—OG有三种角色:agent,collector,master.agent从各个数据源收集日志数据,将收集到的日志数据集中到collector。FLume-NG只有一种角色的节点:agent。多个agent可以连接成有向无环图完成更加复杂的功能。

  删除节点角色:脱离zookeeper。在OG版本中,Flume的使用稳定性依赖zookeeper。它需要zookeeper对其他多个节点的工作进行管理,尤其是集群中配置了多个master。在NG版本中,节点角色变为一个,所以脱离了zookeeper。

  用户配置变化:Ng安装,只需要在flume-env.sh中设置$Java_Home

                        数据传输配置:NG只需要一个配置文件,该文件中存放source,sink,channel的配置

Flume配置步骤:

   Agent连接的Source,Sink,Channel名称的配置

   Agent Source的相关配置

   Agent Sink的相关配置

   Agent Channel的相关配置

其中,在Source和Sink中可以配置序列化来定制序列化方式,可以配置拦截器(Interceptor)来过滤指定的数据