一、关于flume的基本介绍
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,
用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方的能力。
Flume的逻辑架构:
Flume逻辑上分三层架构:agent,collector,storage
agent
agent用于采集数据,agent是flume中产生数据流的地方,同时,agent会将产生的数据流传输到collector。
collector
collector的作用是将多个agent的数据汇总后,加载到storage中。
storage
storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase等。
Master
Master是管理协调agent和collector的配置等信息,是flume集群的控制器。
在Flume中,最重要的抽象是data flow(数据流),data flow描述了数据从产生,传输、处理并最终写入目标的一条路径。
对于agent数据流配置就是从哪得到数据,把数据发送到哪个collector。
对于collector是接收agent发过来的数据,把数据发送到指定的目标机器上。
二、安装配置
步骤1:
下载flume最新的稳定版本,官方最新版本为1.4.0,连接地址:http://www.apache.org/dyn/closer.cgi/flume/1.4.0/apache-flume-1.4.0-bin.tar.gz, 将下载的文件放置在/usr/local下。
步骤2:
解压flume安装包到/usr/local目录下面下面,
在命令行中输入:tar zxvf apache-flume-1.4.0-bin.tar.gz,
重新命名为flume-1.4.0:mv apache-flume-1.4.0-bin flume-1.4.0。
步骤3:
修改etc/profile文件,加入:
export FLUME_HOME=/usr/local/flume-1.4.0
export PATH=.:$PATH:$FLUME_HOME
步骤4:
进入/usr/local/flume-1.4.0/conf目录,执行命令:
cp flume-conf.properties.template example-conf.properties
步骤5:
在example-conf.properties中增加如下配置:
#agent1表示代理名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
#Spooling Directory是监控指定文件夹中新文件的变化,一旦新文件出现,就解析该文件内容,然后写入到channle。写入完成后, 标记该文件已完成或者删 除该文件。
#配置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://hadoop0: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
步骤6:
执行命令bin/flume-ng agent -n agent1 -c conf -f conf/example-conf.properties -Dflume.root.logger=DEBUG,console