第一章 启动 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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。