关于flume的简介看参考:http://www.aboutyun.com/thread-7415-1-1.html
其实一张图就简单明了了
简单安装:
1.下载解压
。。。
2.配置JDK,flume-env.sh
3.配置flume的环境变量
。。。
4.创建一个实例文件(没有现成的,要自己创建)
test.conf
1 agent1.sources = source1 2 agent1.channels = channel1 3 agent1.sinks = sink1 4 5 agent1.sources.source1.type=spooldir 6 agent1.sources.source1.spoolDir=/home/hadoop/testFlume 7 agent1.sources.source1.channels=channel1 8 agent1.sources.source1.fileHeader=false 9 10 agent1.sinks.sink1.type=hdfs 11 agent1.sinks.sink1.hdfs.path=hdfs://hadoop:8020/test 12 agent1.sinks.sink1.hdfs.fileType=DataStream 13 agent1.sinks.sink1.hdfs.writeFormat=Text 14 agent1.sinks.sink1.hdfs.rollInterval=4 15 agent1.sinks.sink1.channel=channel1 16 17 agent1.channels.channel1.type = file 18 agent1.channels.channel1.checkpointDir=/home/hadoop/apache-flume-1.5.2-bin/tmp/checkpointDir2 19 agent1.channels.channel1.dataDirs=/home/hadoop/apache-flume-1.5.2-bin/tmp/dataDir2
5.启动
flume-ng agent -n agent1 -c conf -f /home/hadoop/apache-flume-1.5.2-bin/conf/test.conf -Dflume.root.logger=DEBUG,console
6.测试
在目标文件夹中随便编辑一个文件,然后在HDFS中查看就行
关于实例文件怎么写,可以参考包中的docs文件夹中的文档,其中三个组件source/sink/channel什么类型的怎么写都有介绍,比如HDFS的sink
关于启动命令的解释可以参考命令行help
其中第一个参数agent意思是启动一个flume的agent
第二个参数-n是指定启动哪个agent(因为flume是基于分布式的,可以有多个客户端,就是多个agent)
第三个参数-c conf是指定用哪些配置文件,这样指定是使用flume文件夹中的conf文件夹中的配置文件,也可以自己指定
第四个参数-f xxx 是指定实例文件和它的位置
第五个参数-Dflume.root.logger 是指定日志层次和显示,这里定义在DEBUG级别,方便学习,输出在console界面上
启动后会一直循环输出,即flume不断检查源,如果有输入则开始传输
这当然是最简单的实例,源可以设置为tomcat的日志文件夹,把所有日志文件自动传输到HDFS上,供分析统计
当然更高级一点的就涉及flume的架构涉及,可靠性设计,实时监控、灾难处理和负载均衡的问题
可以参考:http://tech.meituan.com/mt-log-system-arch.html
flume 中的 spooldir source不支持子目录-_-
不支持再编辑
编码要一致,否则会导致flume崩溃