1.下载flume-1.6.0(apache-flume-1.6.0-bin.tar.gz)
http://flume.apache.org/download.html
2.上传到集群(本文上传到hadoop04节点)
3.解压安装包
tar -zxvf apache-flume-1.6.0-bin.tar.gz -C apps/
并且修改文件夹名字
mv apache-flume-1.6.0-bin flume-1.6.0
4.进入conf文件夹修改配置信息
cd /home/hadoop/apps/flume-1.6.0/conf
5.修改配置文件
[hadoop@hadoop04 conf]$ cp flume-env.sh.template flume-env.sh
vim flume-env.sh
6.配置环境变量
vim .bashrc
增加下面的内容
export FLUME_HOME=/home/hadoop/apps/flume-1.6.0/bin
export PATH=$PATH:$FLUME_HOME/bin
source .bashrc
7.测试是否成功
[hadoop@hadoop04 ~]$ flume-ng version
8.flume的使用
官方帮助文档:点击打开链接
Source:读数据
Avro Source:
监听Avro的一个端口和接收事件从外部的Avro client获取流数据(监听指定的端口,并且在指定端口上接收数据),在linux里面有一个nc命令(可以向指定端口发送数据,就跟ping baidu.com一样,即通过nc向端口发送数据,Avro Source就可以在这个端口接收到数据)
Spooling Directory Source: (日志常用)
监控指定文件的数据,在磁盘上去写一个指定的spooling的目录,这个Source可以观测指定的目录的新文件并且把这个事件粘贴到新文件里面。(监控指定的文件夹或者目录,这个文件夹下面是没有子文件夹的,一旦这个目录被监控以后,往该目录下写文件,这个文件将被Spooling DirectorySource读取文件中的内容,读取完之后将文件名增加后缀.COMPLETED
Exec Source:(日志常用)
运行在一个给定的Unix或者Linux命令,当命令执行时候,Exec Source会去读取接收命令所接受到的数据(比如说cat,tail命令),其实就是使用一个linux命令读取数据信息,然后通过Exec Source就可以获取出来,其实也是写日志。(tail命令就是获取
获取最后多少行,获取最新的新增加的)
Exec Source 和Spool Source 比较
1、ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法何证日志数据的完整性。
2、SpoolSource虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。
3、总结:如果应用无法实现以分钟切割日志文件的话,可以两种 收集方式结合使用。
Channel:消息队列,缓存
Memory Channel:
让内存作为我们中间的缓存,所有的事件数据都放到内存队列里去,可以去配置最大的内存大小,可以实现高速的吞吐,但是无法保证数据的完整性。
JDBC Channel:
Kafaka Channel:
File Channel:文件也可以作为Channel,保证数据的完整性与一致性。在具体配置不现的FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率。
Spillable Memory Channel:可分割内存的Channel
MemoryRecoverChannel在官方文档的建议上已经建义使用FileChannel来替换。
Sink:将Channel中的数据写入到目的地,进行相应的存储文件系统,数据库,或者提交到远程服务器。
HDFS Sink:把事件写到HDFS上,支持创建新的文本和序列化文件和压缩格式,还支持回滚(最大的好处就是从HDFS中直接分区导入到Hive中)
Hive Sink:
Logger Sink:将日志事件在信息的级别去显示(可以显示到控制台)
Avro Sink:写到指定的端口去写数据
Thrift Sink:
flume部署种类:
单一代理流程:
多代理流程:
流合并:(多代理的一种)
多路复用:从一个地方收集信息最终写到不同的地方去,(多路复制是接收到的数据都是一样的)
注意:一个sink只能指定一个channel
下面是模板&#x