Flume 架构实战
Flume是什么
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。
Flume特点
- 可靠性
- 数据不丢失
- 可扩展性
- 各组件数目可扩展
- 高性能
- 高吞吐量,可以满足海量日志的搜集
- 可管理
- 动态增加、删除组件
- 文档丰富、社区活跃
- Hadoop生态应用及其广泛
Flume NG架构
flume的核心是把数据从数据源(source)收集过来,在将收集到的数据送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,flume在删除自己缓存的数据。
Flume核心概念
- Cleint
- Event
- Agent
- Source
- Channel
- Sinks
- 其他组件 Interceptor、Channel Selector、Sink Processor
Cleint
客户端
Event
- Flume事件的传输基本单元
- Flume以事件的形式从事件源传输到最终目的地
- 一个完整的event包括:event headers、event body
- Header容纳了key-value的无序集合,其中key在一个header中是唯一的
- Body 一般指数据主体
在整个数据的传输的过程中,流动的是event,即事务保证是在event级别进行的。event将传输的数据进行封装,是flume传输数据的基本单位,如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到