「大数据篇」实时日志抽取-Flume基础篇

概述

现如今,系统应用日志不仅可以帮助你解决网站的问题,更可以提供关于业务、客户以及用户行为分析的有价值的信息。将日志数据储存至hdfs中并不是什么难事,只需打包然后一个put命令就可以了,但是这样做的弊端显而易见,耗时低效而且无法实时处理。所以我们需要的是一个能够处理流式日志数据的解决方案,那么,我们的Flume就登场了。


基本概念以及组件

Flume的基本概念以及优势请自行百度。下面介绍Flume中的基本定义。

event(事件)】:Flume传输的基本数据负载。由大于等于0个的头(类似http头)与体(字节数组)组成;

source(源)】:数据的输入;

sink(接收器)】:数据的输出;

channel(管道)】:提供了源与接收器之间的胶水;

agent(代理)】:源、接收器、管道的集合;

拦截器】:处于源与接收器之间,类似于Spring的AOP;

。。。。。。等等

安装与配置

前提条件:需要安装jdk1.7版本以上。将下载好的包解压至指定目录。

「大数据篇」实时日志抽取-Flume基础篇

拷贝conf下文件

「大数据篇」实时日志抽取-Flume基础篇

「大数据篇」实时日志抽取-Flume基础篇

从HelloWorld开始

拷贝安装目录conf下flume-conf.properties.template至指定位置,在这里我把他命名为netcat.conf。

「大数据篇」实时日志抽取-Flume基础篇

编辑netcat.conf写入代理的配置。

agent.sources = s1

agent.channels = c1

agent.sinks = k1

agent.sources.s1.type=netcat //表示打开一个socket监听事件

agent.sources.s1.channels=c1

agent.sources.s1.bind=0.0.0.0 //表示监听任何地址的java预约定

agent.sources.s1.port=12345

agent.channels.c1.type=memory

agent.sinks.k1.type=logger //会使用log4j将info级别的日志记录下来

agent.sinks.k1.channel=c1

这里我们定义了一个名为agent的代理,他有一个名为s1的源,一个名为c1的通道,以及一个名为k1的接收器。

源类型为netcat,接收器类型为logger,主要用于调试和测试。

写好配置文件后进入bin目录下,启动代理

「大数据篇」实时日志抽取-Flume基础篇

看到如下表示代理启动成功

「大数据篇」实时日志抽取-Flume基础篇

可以看到源现在正在监听12345端口的输入。

现在我们再打开一个终端,使用nc(yum install -y nc)命令发送‘hello world’并敲入<return>来标识事件的结束。/<return>

图中的OK来自于代理,表示将文本作为一个Flume事件接受。然后查看代理日志,胡看到如下内容。

「大数据篇」实时日志抽取-Flume基础篇

上述日志信息表明该Flume不包含头文件,体是以十六进制的形式呈现,并且还有一个字符串便于阅读。

「大数据篇」实时日志抽取-Flume基础篇


分享到:


相關文章: