flume学习

来源:互联网 发布:js访问者模式 编辑:程序博客网 时间:2024/06/03 13:30
1.flume是分布式的日志收集系统,把收集来的数据传送到目的地去。
2.flume里面有个核心概念,叫做agent。agent是一个java进程,运行在日志收集节点。
3.agent里面包含3个核心组件:source、channel、sink。
3.1 source组件是专用于收集日志的,可以处理各种类型各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。
    source组件把数据收集来以后,临时存放在channel中。
3.2 channel组件是在agent中专用于临时存储数据的,可以存放在memory、jdbc、file、自定义。
    channel中的数据只有在sink发送成功之后才会被删除。
3.3 sink组件是用于把数据发送到目的地的组件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定义。
4.在整个数据传输过程中,流动的是event,可以理解为每条数据。事务保证是在event级别。

5.flume可以支持多级flume的agent,支持扇入(fan-in source可以接受多个输入)、扇出(fan-out sink可以输出多个目的地)。

解压:

 tar -zxvf apache-flume-1.4.0-bin.tar.gz

 tar -zxvf apache-flume-1.4.0-src.tar.gz

将解压后的src中的内容全部复制到解压后bin中:

cp apache-flume-1.4.0-src/* apache-flume-1.4.0-bin


6.书写配置文件example

#agent1表示代理名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1


#Spooling Directory是监控指定文件夹中新文件的变化,一旦新文件出现,就解析该文件内容,然后写入到channel。写入完成后,标记该文件已完成或者删除该文件。
#配置source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/root/hmbbs
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader = false
agent1.sources.source1.interceptors = i1
agent1.sources.source1.interceptors.i1.type = timestamp

#配置sink1
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://hadoop1:9000/hmbbs
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

#配置channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.checkpointDir=/root/hmbbs_tmp123
agent1.channels.channel1.dataDirs=/root/hmbbs_tmp

执行名称为agent1的agent,配置文件目录设为conf,因为conf下有 log4j.properties配置,读取conf/example内的flume配置信息,也就是上面的配置。然后修改日志级别为debug和输出位置为控制台。

7.执行命令bin/flume-ng agent -n agent1 -c conf -f conf/example -Dflume.root.logger=DEBUG,console

成功运行后,上传一个文件到/root/hmbbs中,flume就会监控到有新增的文件,然后source组件执行收集工作,将收集的数据临时存储在channel中,然后sink组件开始将channel中的文件发送到HDFS(hdfs://hadoop1:9000/hmbbs目录下),执行完毕再hdfs://hadoop1:9000/hmbbs下会生成一个前缀为当前日期,然后连接一个timestamp的文件,agent执行完毕。在上传文件的/root/hmbbs目录,hello文件变为hello.COMPLETED文件。





0 0
原创粉丝点击