一、flume简介:
flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力;
Flume 使用 java 编写,其需要运行在 Java1.6 或更高版本之上
⑴ Flume的优势
- Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase
- 当收集数据的速度超过将写入数据的时候,也就是当收集信息遇到峰值时,这时候收集的信息非常大,甚至超过了系统的写入数据能力,这时候,Flume会在数据生产者和数据收容器间做出调整,保证其能够在两者之间提供一共平稳的数据.
- 提供上下文路由特征
- Flume的管道是基于事务,保证了数据在传送和接收时的一致性.
- Flume是可靠的,容错性高的,可升级的,易管理的,并且可定制的。
⑵ Flume具有的特征:
- Flume可以高效率的将多个网站服务器中收集的日志信息存入HDFS/HBase中
- 使用Flume,我们可以将从多个服务器中获取的数据迅速的移交给Hadoop中
- 除了日志信息,Flume同时也可以用来接入收集规模宏大的社交网络节点事件数据,比如facebook,twitter,电商网站如亚马逊,flipkart等
- 支持各种接入资源数据的类型以及接出数据类型
- 支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等
- 可以被水平扩展
二、架构
Flume的架构主要有一下几个核心概念:
Event(事件):flume传输数据的基本单位,如果是文本文件,通常是一行记录,这也是事务的基本单位; 由一个转
载数据的字节数组+一个可选头部(header)构成;
Event 从 Source,流向 Channel,再到 Sink;
典型的Flume 事件如下面结构所示: