Flume入门
★ Flume入门
Flume是一个分布式的日志收集系统。
这里的日志可以是文本文件也可能是流式的文件。
Flume的Agent是一个Java进程,运行在代理端。代理端即日志收集节点。
Agent包含:Source ChannelSink
Source专用于收集日志,可以处理各种格式的日志数据。支持的文件格式:略
Source收集到的数据,临时存储到Channel中。
Channel可以存储的数据格式包括:Memory、Jdbc、File或自定义。
Sink用于把数据发送到目的地,目的地可能是文件:HDFS、Logger、Avro、Thrift、Ipc、File、Null、Hbase、Solr、或自定义
只有当Sink把Channel中的临时数据传输完成后,Channel中的数据才会被删除。
数据传输过程中,流动的数据的最小单位称为Event。
Source可以接收多个输入,Sink可以输出多个目的地。
Spooling Directory Source是监控指定文件中新文件的变化,一旦出现新文件,就去解析它。解析完后,可以选择把该文件标记为已读或把新文件删除。
★ Flume架构
★ Flume安装
1:两个包。把src包中内容复制到bin包中
2:配置:在conf/目录下配置example文件。
配置文件内容如下:
#agent1
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#Spooling Directory
#setting source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/root/fin
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type= timestamp
#setting sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://hadoop5:9000/fout
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=1
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d
#setting channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/root/flume_tmp/wealon
agent1.channels.channel1.dataDirs=/root/flume_tmp/
在/root下建一个目录fin,这个目录是用来监控的目录,即Agent中source读取的目录
mkdir fin
在HDFS下建一个目录fout,这个目录是Sink输出文件的目录
hadoop fs -mkdir /fout
启动flume
bin/flume-ng agent -n agent1 -c conf -fconf/example -Dflume.root.logger=DEBUG,console
可以复制一个文件到/root/fin中,Flume会自动监测到文件夹的变化,并且处理,把文件复制到HDFS中。