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能够支持多种数据源并且输出多种数据源,能够支持多种数据格式的数据
发展历程:
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)来过滤指定的数据