zgh1988的专栏

在学计算机新知识时,第一件事情就是要写一个 “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 包。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 agenta1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the sourcea1.sources.r1.type = netcata1.sources.r1.bind = localhosta1.sources.r1.port = 44444# Describe the sinka1.sinks.k1.type = logger# Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1(4) 启动 flume启动 flume 的脚本是 bin/flume-ng,执行它,即:bin/flume-ng,会显示该命令的帮助命令。即:Usage: bin/flume-ng <command> [options]…在这里,我们关注以下几个参数:commands: agent启动一个 flume agentglobal 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”。

参考文献:

本文 url :

坚硬的城市里没有柔软的爱情,生活不是林黛玉,

zgh1988的专栏

相关文章:

你感兴趣的文章:

标签云: