概述
现如今,系统应用日志不仅可以帮助你解决网站的问题,更可以提供关于业务、客户以及用户行为分析的有价值的信息。将日志数据储存至hdfs中并不是什么难事,只需打包然后一个put命令就可以了,但是这样做的弊端显而易见,耗时低效而且无法实时处理。所以我们需要的是一个能够处理流式日志数据的解决方案,那么,我们的Flume就登场了。
基本概念以及组件
Flume的基本概念以及优势请自行百度。下面介绍Flume中的基本定义。
【event(事件)】:Flume传输的基本数据负载。由大于等于0个的头(类似http头)与体(字节数组)组成;
【source(源)】:数据的输入;
【sink(接收器)】:数据的输出;
【channel(管道)】:提供了源与接收器之间的胶水;
【agent(代理)】:源、接收器、管道的集合;
【拦截器】:处于源与接收器之间,类似于Spring的AOP;
。。。。。。等等
安装与配置
前提条件:需要安装jdk1.7版本以上。将下载好的包解压至指定目录。
拷贝conf下文件
从HelloWorld开始
拷贝安装目录conf下flume-conf.properties.template至指定位置,在这里我把他命名为netcat.conf。
编辑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目录下,启动代理
看到如下表示代理启动成功
可以看到源现在正在监听12345端口的输入。
现在我们再打开一个终端,使用nc(yum install -y nc)命令发送‘hello world’并敲入<return>来标识事件的结束。/<return>
图中的OK来自于代理,表示将文本作为一个Flume事件接受。然后查看代理日志,胡看到如下内容。
上述日志信息表明该Flume不包含头文件,体是以十六进制的形式呈现,并且还有一个字符串便于阅读。
閱讀更多 安全獁 的文章