我是靠谱客的博主 文静眼睛,最近开发中收集的这篇文章主要介绍Flume之两个Agent串联接收消息概述案例编写agent配置文件启动Agent测试查看结果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

概述在这里插入图片描述

这种模式是将多个flume顺序连接起来了,从最初的source开始到最终sink传送的目的存储系统。此模式不建议桥接过多的flume数量, flume数量过多不仅会影响传输速率,而且一旦传输过程中某个节点flume宕机,会影响整个传输系统。

两套agent可能是两个机器,一旦发生两个agent串联,头一个agent的sink必须选AvroSink,然后第二个agent的Source要选AvroSource.

案例

在zjj101机器上agent1 使用架构 netcatsource—memorychannel–arvosink
在zjj102机器上agent2使用架构 avrosource----memorychannel–loggersink
agent1给输出结果输出到agent2上.

编写agent配置文件

zjj101机器

demo1.conf

#agent1
#a1是agent的名称,a1中定义了一个叫r1的source,如果有多个,使用空格间隔
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#组名名.属性名=属性值
a1.sources.r1.type=netcat
a1.sources.r1.bind=zjj101
a1.sources.r1.port=44444

#定义sink
a1.sinks.k1.type=avro
a1.sinks.k1.hostname=zjj102
a1.sinks.k1.port=33333
#定义chanel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000

#连接组件 同一个source可以对接多个channel,一个sink只能从一个channel拿数据!
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1

zjj102机器

demo1.conf

#agent2
#a1是agent的名称,a1中定义了一个叫r1的source,如果有多个,使用空格间隔
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#组名名.属性名=属性值
a1.sources.r1.type=avro
a1.sources.r1.bind=zjj102
a1.sources.r1.port=33333

#定义sink
a1.sinks.k1.type=logger

#定义chanel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000

#连接组件 同一个source可以对接多个channel,一个sink只能从一个channel拿数据!
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1

启动Agent

启动的时候先启动zjj102机器的的agent,因为zjj102机器的的agent绑定了ip端口号啥的 ,zjj101机器才能进行推送,所有先启zjj102的.

因为两台机器的文件位置是一样的,所以命令看起来差不多也是一样的.

启动zjj102的agent

linux命令

flume-ng agent -n a1  -c conf/  -f  "/root/soft/apache-flume-1.7.0/conf/job/demo1.conf"  -Dflume.root.logger=DEBUG,console

启动zjj101的agent

linux命令

flume-ng agent -n a1  -c conf/  -f  "/root/soft/apache-flume-1.7.0/conf/job/demo1.conf"  -Dflume.root.logger=DEBUG,console

测试

由于上面两个agent是在前台启动的,所有就干脆打开一个Linux终端往 44444端口推送内容

第二个zjj101终端

# zjj101是配置了hosts.如果你没配置hosts的话,就把zjj101替换你要连接的服务器的ip

[root@zjj101 ~]# nc zjj101 44444
sdad
OK
你好,我是张俊杰
OK
helloflume
OK

查看结果

zjj102机器

可以看到zjj102机器已经获取到结果了,

这个结果是 第二个zjj101终端 往第一个zjj101终端 发送内容, 然后 第一个zjj101终端把内容传给了zjj102机器的agent上.

你也可以理解为第一个zjj101终端和第二个zjj101终端是两台机器,.


20/10/23 17:56:51 INFO source.AvroSource: Avro source r1 started.
20/10/23 17:57:01 INFO ipc.NettyServer: [id: 0x1655defa, /172.16.10.101:59964 => /172.16.10.102:33333] OPEN
20/10/23 17:57:01 INFO ipc.NettyServer: [id: 0x1655defa, /172.16.10.101:59964 => /172.16.10.102:33333] BOUND: /172.16.10.102:33333
20/10/23 17:57:01 INFO ipc.NettyServer: [id: 0x1655defa, /172.16.10.101:59964 => /172.16.10.102:33333] CONNECTED: /172.16.10.101:59964
20/10/23 17:59:13 INFO sink.LoggerSink: Event: { headers:{} body: 73 64 61 64                                     sdad }
20/10/23 17:59:17 INFO sink.LoggerSink: Event: { headers:{} body: E4 BD A0 E5 A5 BD 2C E6 88 91 E6                          98 AF E5 BC A0 ......,......... }
20/10/23 17:59:47 INFO sink.LoggerSink: Event: { headers:{} body: 68 65 6C 6C 6F 66 6C 75 6D 65                   helloflum

最后

以上就是文静眼睛为你收集整理的Flume之两个Agent串联接收消息概述案例编写agent配置文件启动Agent测试查看结果的全部内容,希望文章能够帮你解决Flume之两个Agent串联接收消息概述案例编写agent配置文件启动Agent测试查看结果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部