1.1 什么是Flume?
Flume是Cloudera开发的实时日志收集系统,受到了业界的认可与广泛应用。Flume初始的发行版本目前被统称为“Flume OG(original generation)”,属于 Cloudera。但随着FLume功能的扩展,“Flume OG”代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点暴露出来,尤其是在“Flume OG”的最后一个发行版本0.94.0中,日志传输不稳定的现象尤为严重,为了解决这些问题,2011年10月22号,Cloudera完成了“Flume-728”,对Flume进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,重构后的版本统称为“Flume NG(next generation)”;改动的另一原因是将 Flume 纳入Apache旗下,“Cloudera Flume”改名为“Apache Flume”。
1.2 Flume的特点
Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。
Flume的数据流是由Event(事件)贯穿始终的。Event是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。其实可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志,比如保存到文本、HDFS、Hbase等,这是普通的Data flow model,