- Flume概念
- Flume是Cloudera提供的一个高可用,高可靠,分布式的海量日志采集、聚合和传输的系统
- Flume支持在日志系统中定制各种数据发送方,用于收集数据
- Flume提供对数据进行处理,并写到各种不同的数据接收方的能力(可定制).
- Flume架构
- Flume的核心是把数据从数据源收集过来再送到目的地,为了保证输送的成功,在送到目的地前flume会缓存数据,等到数据传输完成后,再删掉自己缓存的数据
- Flume的核心角色是agent,flume采集系统就是由一个个agent所链接起来的
- flume的agent有三个组件组成
- source
- 采集组件,数据的收集端,负责跟数据源对接,以获取数据,source会在将数据捕获后,对数据进行格式化,将数据封装到事件(Event)中,然后将事件推入到channel中
- source 主要分以下几种
- Avro Source
- Listens on Avro port and receives events from external Avro client streams.
- Thrift Source
- Listens on Thrift port and receives events from external Thrift client streams.
- Exec Source
- Exec source runs a given Unix command on start-up and expects that process to continuously produce data on standard out (stderr is simply discarded, unless property logStdErr is set to true)
- Spooling Directory Source
- This source lets you ingest data by placing files to be ingested into a “spooling” directory on disk
- 除了以上几种外还有JMS Source 、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source,etc。而且Flume还允许自定义source
- channel
- 传输通道,可以缓存数据,用于从source将数据传输给sink
- Flume对于Channel,则提供了Memory Channel、JDBC Chanel、File Channel,etc。
- sink
- 下沉组件,取出channel的数据,进行相应的存储文件系统、数据库、提交到远程的服务器或者是下一级的agent中
- Flume也提供了很多sink的实现,包括HDFS sink、Logger sink、Avro sink、File Roll sink、Null sink、HBase sink,etc。
- Flume 采集系统
- 简单结构
- 单个agent采集数据

- 复杂结构
- 两个agent互联

- 多个agent互联

- 多个channel

- Flume的安装
Flume的安装比较简单
- 下载安装包
官网地址http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.14.2.tar.gz
- 规划安装目录
/bigdata/install
- 解压安装包到指定的规划目录,并重命名文件夹
tar -zxvf flume-ng-1.6.0-cdh5.14.2.tar.gz -C /bigdata/install mv apache-flume-1.6.0-cdh5.14.2-bin flume-1.6.0-cdh5.14.2
- 修改配置文件
- 将 /bigdata/install/flume-1.6.0-cdh5.14.2/conf/里面的 flume-env.sh.template 重命名为 flume-env.sh
- 修改flume-env.sh
export JAVA_HOME=${your java home}
- 实例
- 需求
监控某个文件如果又新增内容就把数据采集到控制台显示
修改配置文件
在flume的安装目录新建一个myconf文件夹用于存放flume的开发配置文件
vim tail-log.conf
#定义一个agent,分别指定source、channel、sink别名
a1.sources = r1
a1.channels = c1
a1.sinks = k1
#定义source
#指定source的类型为exec,即通过Linux命令来传输数据
a1.sources.r1.type = exec
#监控一个文件,如果有新的数据产生就采集走
a1.sources.r1.command = tail -F /bigdata/data/flume/tail.log
#指定source的数据流入的channel中
a1.sources.r1.channels = c1
#配置channel
#指定channel的类型为memory
a1.channels.c1.type = memory
#指定channel 最多可以存放的容量
a1.channels.c1.capacity = 1000
#指定事务中source写数据到channel或者sink从channel中取数据的最大的条数
a1.channels.c1.transactionCapacity = 100
#配置sink
#指定sink从哪个channel中获取数据
a1.sinks.k1.channel = c1
#指定sink的类型为日志格式。结果会打印在控制台中
a1.sinks.k1.type = logger
启动agent
进入到node01的/bigdata/install/flume-1.6.0-cdh5.14.2目录执行
```
bin/flume-ng agent -n a1 -c myconf -f myconf/tail-log.conf -Dflume.root.logger=info.console
-n指定该agent的名称
-c表示配置文件所在的目录
-f指定配置文件
-D表示指定key=value键值对---这里指定的是启动的日志输出级别
```
Flume简介
原文:https://www.cnblogs.com/William364248886/p/11915304.html