大数据入门之分布式日志收集框架Flume(2) -- Flume简单使用

1.需求:从指定网络端口采集数据输出到控制台

用Flume就是要写配置文件,所以我们在flume下的conf目录,执行“vi example.conf”,内容如下。

# a1就是agent的名称
# r1就是source的名称,k1是sink的名称,c1是channel的名称
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# source的具体配置
# a1.sources.r1.type 就是a1里面的名称是r1的source的种类。
# netcat 就是可以监听某个端口,收集端口发送的每一行数据
# bind和port分别就是被监听的ip和端口
a1.sources.r1.type = netcat
a1.sources.r1.bind = hadoop000
a1.sources.r1.port = 44444

# sink的具体配置
# logger 就是将信息打印到控制台
a1.sinks.k1.type = logger

# channel的具体配置
# 我们把中间信息存入内存中
a1.channels.c1.type = memory

# 将这三个组件串起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

配置完成之后,我们要启动Flume。

flume-ng agent \
--name a1 \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/example.conf \
-Dflume.root.logger=INFO,console 

a1就是刚才设置的agent的名称,$FLUME_HOME/conf对应你flume下的conf目录,$FLUME_HOME/conf/example.conf就是你刚才写的配置文件,-Dflume.root.logger=INFO,console表示将信息打印到控制台。

因为刚才配置的是监听hadoop的44444端口,所以我们启动一个新终端,执行“telnet hadoop000 44444”。然后我们在44444这个端口上写点东西。比如敲一行字符串”Hello World“。

大数据入门之分布式日志收集框架Flume(2) -- Flume简单使用_第1张图片

然后我们回到Flume的启动的那个终端,查看一下,有没有收集到数据。如下就成功了。

2.需求:监控一个文件实时采集新增的数据到控制台

这里我们做第二个需求,我们先把前面开的Flume和telnet先停掉。

还是一样在conf目录下,写配置文件。执行“vi exec-memory-logger.conf”,内容如下。

# 配置三个组件的名称
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# source配置
# exec是用来执行shell命令的
# command后面写的就是你要执行的shell命令(监控的就是data.log文件)
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/Kiku/data/data.log
a1.sources.r1.shell = /bin/sh -c

# 配置sink
a1.sinks.k1.type = logger

# 配置channel
a1.channels.c1.type = memory

# 将三个组件串起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

你需要在/home/Kiku/data(这个目录你可以自己配置)下,创建一个data.log文件,用于测试。

我们还是先启动Flume。

flume-ng agent \
--name a1 \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/exec-memory-logger.conf \
-Dflume.root.logger=INFO,console

然后我们打开另一个终端,向data.log文件写入一些内容。到data.log文件的目录下,执行“echo HelloWorld >> data.log”

此时我们观察到,Flume的控制台上,有内容传送过来,如下图所示即可。

3.需求:将A服务器上的日志实时采集到B服务器

这里我们做第三个需求,我们先把前面开的Flume先停掉。

还是一样在conf目录下,写配置文件。执行“vi exec-memory-avro.conf”,内容如下。

# 配置组件的名称
exec-memory-avro.sources = exec-source
exec-memory-avro.sinks = avro-sink
exec-memory-avro.channels = memory-channel

# source配置,监听文件内容
exec-memory-avro.sources.exec-source.type = exec
exec-memory-avro.sources.exec-source.command = tail -F /home/Kiku/data/data.log
exec-memory-avro.sources.exec-source.shell = /bin/sh -c

# avro是跨节点sink
# hostname和port代表要通过sink发送到哪里
exec-memory-avro.sinks.avro-sink.type = avro
exec-memory-avro.sinks.avro-sink.hostname = hadoop000
exec-memory-avro.sinks.avro-sink.port = 44444

# channel配置
exec-memory-avro.channels.memory-channel.type = memory

# 将三个组件串起来
exec-memory-avro.sources.exec-source.channels = memory-channel
exec-memory-avro.sinks.avro-sink.channel = memory-channel

因为这里的sink将数据发送到了hadoop000的44444端口上,所以我们还需要写一个配置文件,来接受发送过来的数据。执行“vi avro-memory-logger.conf”。

# 配置组件的名称
avro-memory-logger.sources = avro-source
avro-memory-logger.sinks = logger-sink
avro-memory-logger.channels = memory-channel

# 用来接受从前面avro sink传过来的数据
# hostname和port就是数据源地址
avro-memory-logger.sources.avro-source.type = avro
avro-memory-logger.sources.avro-source.bind = hadoop000
avro-memory-logger.sources.avro-source.port = 44444

# 配置sink,打印到控制台
avro-memory-logger.sinks.logger-sink.type = logger

# 配置channel
avro-memory-logger.channels.memory-channel.type = memory

# 三个组件组合
avro-memory-logger.sources.avro-source.channels = memory-channel
avro-memory-logger.sinks.logger-sink.channel = memory-channel

下面要启动Flume,先启动avro-memory-logger,因为它是监听在44444端口之上,所以要先启动起来。

flume-ng agent \
--name avro-memory-logger \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/avro-memory-logger.conf \
-Dflume.root.logger=INFO,console

再启动exec-memory-avro。

flume-ng agent \
--name exec-memory-avro \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/exec-memory-avro.conf \
-Dflume.root.logger=INFO,console

然后我们想data.log写点内容,“echo Hello FLume >> data.log“。然后切回到,第一个Flume终端中,查看结果。

 

你可能感兴趣的:(大数据,Flume)