标签:flume 日志
在学计算机新知识时,第一件事情就是要写一个 “Hello World”,同样,在 flume 中,它的 “Hello World” 就是 run it。
1、flume 基本概要
(1) flume 是做什么的?
flume 是 apach 的开源项目,它主要用来收集数据,即将来源于不同节点的数据汇聚到一个中心节点。
(2) 数据在 flume 内部传输过程中是否会丢失数据?
flume 内部支持事务,在数据传输过程中不存在丢失数据的情况,但是有可能重复。
(3) flume 宕机,是否会丢失数据?
flume 内部支持两种机制:内存队列和文件队列。内存队列提供了高效,高吞吐量的数据收集,但是当 flume 宕机时,存储在内存队列的数据就会丢失,不能恢复。文件队列提供了低性能,高可靠性的数据收集,当 flume 宕机时,存储在文件队列中的数据是能够恢复的。
(4) flume 的健壮性,稳定性如何?
flume 服务基本能达到 99.99%
2、flume 基本组件(source, channel, sink)
根据图1.1简单的介绍一下 flume 内部的系统架构,数据流向,基础组件。
flume 由三个组件来支撑起整个内部系统架构,三个组件分别为 Source, Channel, Sink。其中 Channel 是数据存储器,保存 flume 内部的所有数据; Source 类似于生产者,它接受外部数据,并将数据保存到 Channel;Sink
类似于消费者,从 Channel 中取出数据,并发送到外部。因此 flume 内部的数据流向就是 Web Server —> Source—> Channel —> Sink —> HDFS。用一个我们都熟悉的例子来形象描述 Source, Channel, Sink 的关系:Source 是入水管,Channel 是蓄水池,Sink 是出水管。
3、启动 flume
(1) 去官网下载 flume 包。
官网:http://flume.apache.org/download.html
flume 包:apache-flume-1.5.2-bin.tar.gz
(2) 解压缩 flume 包。
tar -zxvf apache-flume-1.5.2-bin.tar.gz
cd apache-flume-1.5.2-bin
其中 lib 文件中存放的是 jar 包;conf 文件中存放的是配置文件,bin 文件中存放的是执行脚本。
(3) 创建配置文件
conf 文件中存放的配置文件有:flume-conf.properties.template,flume-env.sh.template,
log4j.properties。
flume-conf.properties.template 该模版是用来配置 Source, Channel, Sink 的属性。
flume-env.sh.template 该模版是用来配置执行环境。[暂不介绍]
从 2 节中已经知道了,flume 内部是由 3 个组件 Source, Channel, Sink 连接起来形成数据流的,因此我们需要使用配置文件来初始化各个组件的属性,以及它们之间的连接方式。
在 conf 目录下创建 flume.conf 文件,文件内容如下。
# example.conf: A single-node Flume configuration
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
(4) 启动 flume
启动 flume 的脚本是 bin/flume-ng,执行它,即:bin/flume-ng,会显示该命令的帮助命令。
即:Usage: bin/flume-ng <command> [options]…
在这里,我们关注以下几个参数:
commands: agent启动一个 flume agent
global options: --conf, -c <conf> 指定配置文件目录,指的是 conf/目录下的 flume.env,log4j 和 flume.conf。
-Dproperty = value 设置一个 java 系统参数
agent options: --conf-file, -file<file> 设置一个配置文件,即 flume.conf
--name, -n<name> flume agent name
即 bin/flume-ng agent --conf conf --conf-file conf/flume.conf --name a1 -Dflume.root.logger=INFO,console
至此启动完成,会发现 flume 打印出来的 log。
(5) 发送数据
从(3) 中可以看到配置文件的 Source r1 的类型是
netcat,监听端口为 44444。
因此我们可以手动执行 telnet localhost 44444 来连接到 Source r1。
并向其发送数据, "Hello World ",如下图所示,回车,完成发送数据。
flume 打印的日志有:
我们看到 flume 的 Sink k1 将 "Hello World" 输出到屏幕上。
至此我们完成了 flume 的“Hello World”。
参考文献:
http://flume.apache.org/FlumeUserGuide.html
第一章 启动 flume
标签:flume 日志
原文地址:http://blog.csdn.net/begginghard/article/details/45156501