云计算(六)——flume采集日志信息

一、flume采集日志信息到hdfs系统

【实验目的】

    1)   掌握flume的应用原理

    2)   掌握flume对日志信息的采集过程

【实验原理】

    Flume是Cloudera提供的日志收集系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种storage。Flume是一个分布式、高可靠、和高可用的海量日志采集、聚合和传输的系统。本试验就是通过学习flume工具实现对数据信息的采集并实时把采集到的信息打印到hdfs系统中指定的位置。

【实验环境】

     本次环境是:centos6.5 + jdk1.7.0_79 + hadoop2.4.1 + apache-flume-1.5.0

    工具包在/simple/soft目录下

【实验步骤】

直接start-all.sh失败

ip a 命令发现没有IP地址

修改ip配置

云计算(六)——flume采集日志信息

把DEVICE=eth0改成DEVICE=eth2

云计算(六)——flume采集日志信息

 

重启服务

命令:service network restart

 

通过执行命令start-all.sh启动服务

云计算(六)——flume采集日志信息

 

SecureCRT 与虚拟机连接

云计算(六)——flume采集日志信息

 

在本机桌面新建一个a2.conf文件,记事本编辑如下

a2.sources = r1

a2.channels = c1

a2.sinks = k1

a2.sources.r1.type = exec

a2.sources.r1.command = tail -F /simple/a.log

a2.channels.c1.type = memory

a2.channels.c1.capacity = 1000

a2.channels.c1.transactionCapacity = 100

a2.sinks.k1.type = hdfs

a2.sinks.k1.hdfs.path =  hdfs://192.168.1.2:9000/flume/aa.log

a2.sinks.k1.hdfs.filePrefix = events-

a2.sinks.k1.hdfs.fileType = DataStream

a2.sources.r1.channels = c1

a2.sinks.k1.channel = c1

然后通过SecureCRT 把a2.conf文件复制到虚拟机/simple目录下

云计算(六)——flume采集日志信息

云计算(六)——flume采集日志信息

在/simple目录下创建一个a.log文件并写入内容aaaaaaaaa

云计算(六)——flume采集日志信息

切换到bin目录下,执行flume命令:./flume-ng agent -n a2 -f /simple/a2.conf -c ../conf/ -Dflume.root.logger=INFO,console

云计算(六)——flume采集日志信息

另外再开启一个终端,通过执行命令:echo ‘bbbbbbbbbb’>>/simple/a.log向a.log文件中追加内容。如图3所示。然后可以通过执行hdfs系统的命令查看hdfs中生成的文件并发现hdfs指定的目录文件下的内容增多。

云计算(六)——flume采集日志信息

 

云计算(六)——flume采集日志信息

 

二、flume采集日志信息到控制台

配置ip ,start-all.sh命令启动hadoop

SSH连接,然后在本机桌面新建一个a2.conf文件,编辑内容为:

a2.sources = r1

a2.channels = c1

a2.sinks = k1

a2.sources.r1.type = exec

a2.sources.r1.command = tail -F /simple/a.log

a2.channels.c1.type = memory

a2.channels.c1.capacity = 1000

a2.channels.c1.transactionCapacity = 100

a2.sinks.k1.type = logger

a2.sources.r1.channels = c1

a2.sinks.k1.channel = c1

然后将a2.conf文件复制到虚拟机/simple目录下

在/simple目录下执行命令:touch a.log并向文件中写入内容“aaaaaaaaa”

 

云计算(六)——flume采集日志信息

切换到bin目录下,执行flume命令:./flume-ng agent -n a2 -f /simple/a2.conf -c ../conf/ -Dflume.root.logger=INFO,console。

云计算(六)——flume采集日志信息

执行上一步命令之后,发现在控制台上把/simple/a.log文件的内容输出到控制台上

 

云计算(六)——flume采集日志信息

在另外一个命令终端通过执行命令:echo ‘zzzzzzzzzzzzzzzzzzzzzzzzzzz>>a.log向a.log文件中追加内容时,发现在另外一个终端实时输出’zzzzzzzzzzzzzzzzzzzzzzzzzzzzz’的内容。

 

云计算(六)——flume采集日志信息

 

三、flume采集制定目录下的日志信息到hdfs系统

通过执行命令start-all.sh启动hadoop

在/simple 目录下创建一个文件a4.conf内容如下(通过前两个实验的方法)

a4.sources = r1

a4.channels = c1

a4.sinks = k1

a4.sources.r1.type = spooldir

a4.sources.r1.spoolDir = /simple/logs

a4.channels.c1.type = memory

a4.channels.c1.capacity = 10000

a4.channels.c1.transactionCapacity = 100

a4.sources.r1.interceptors = i1

a4.sources.r1.interceptors.i1.type =  org.apache.flume.interceptor.TimestampInterceptor$Builder

#a2.sinks.k1.type = logger

a4.sinks.k1.type = hdfs

a4.sinks.k1.hdfs.path =  hdfs://192.168.1.2:9000/flume/%Y%m%d

a4.sinks.k1.hdfs.filePrefix = event-

a4.sinks.k1.hdfs.fileType = DataStream

a4.sinks.k1.hdfs.rollCount = 0

a4.sinks.k1.hdfs.rollSize = 134217728

a4.sinks.k1.hdfs.rollInterval = 60

a4.sources.r1.channels = c1

a4.sinks.k1.channel = c1

 

在simple目录下创建一个目录,执行命令:mkdir logs 

云计算(六)——flume采集日志信息

 

在simple目录下创建文件a.log,执行命令touch a.log,编辑内容

 

云计算(六)——flume采集日志信息

 切换到bin目录下,执行flume命令:./flume-ng agent -n a4 -f /simple/a4.conf -c ../conf/ -Dflume.root.logger=INFO,console。

 

云计算(六)——flume采集日志信息

执行上一步命令之后,同时在另外一个终端中,在simple目录下通过执行拷贝命令:cp a.log logs/a1.log和cp a.log logs/a2.log实现把a.log日志文件拷贝到logs目录下,此时logs目录下的日志文件会被采集并保存到hdfs指定位置/flume目录下

 

云计算(六)——flume采集日志信息

 

云计算(六)——flume采集日志信息

 

云计算(六)——flume采集日志信息

上一篇:flume入门笔记


下一篇:Flume-企业开发案例