二百一十七、Flume——Flume拓扑结构之聚合的开发案例(亲测,附截图)

一、目的

对于Flume的聚合拓扑结构,进行一个开发测试

二、聚合

(一)结构含义

这种模式是我们最常见的,也非常实用。日常web应用通常分布在上百个服务器,大者甚至上千个、上万个服务器产生的日志,处理起来也非常麻烦。

(二)结构特征

用flume的这种组合方式能很好的解决这一问题,每台服务器部署一个 flume 采集日志,传送到一个集中收集日志的flume,再由此flume上传到hdfs、hive、hbase等,进行日志分析。

三、需求案例

(一)案例需求

hurys22 上的 Flume-1 监控文件/opt/flume/group.log,

hurys23 上的 Flume-2 监控某一个端口的数据流,

Flume-1 与 Flume-2 将数据发送给 hurys24 上的 Flume-3,Flume-3 将最终数据打印到控制台。

(二)需求分析

四、前期准备

(一)在hurys22、hurys23、hurys24上安装好Flume

(二)在hurys22、hurys23、hurys24上创建测试任务的文件夹group3

root@hurys22 \~\]# cd /usr/local/hurys/dc_env/flume/flume190/conf/ \[root@hurys22 conf\]# mkdir group3 ![](https://file.jishuzhan.net/article/1736265661212004354/1392d09e6a63bff73a7cc26c772a7d42.webp) ### (三)在hurys22上创建Flume-1的 监控文件 /opt/flume/group.log \[root@hurys22 opt\]# cd ./flume/ \[root@hurys22 flume\]# touch group.log \[root@hurys22 flume\]# ll 总用量 0 -rw-r--r-- 1 root root 0 12月 13 10:47 group.log ![](https://file.jishuzhan.net/article/1736265661212004354/777c80b26ec722aa898239219ca1c47e.webp) ### (四)hurys22、hurys23都可以ssh连接hurys24(192.168.0.24) #### 1、hurys22 ssh连接192.168.0.24 \[root@hurys22 \~\]# ssh -p22 root@192.168.0.24 Last login: Wed Dec 13 10:54:57 2023 from 192.168.9.123 ![](https://file.jishuzhan.net/article/1736265661212004354/13a7b09662d6ad8e98a632cb4e74d633.webp) #### 2、hurys23 ssh连接192.168.0.24 \[root@hurys23 \~\]# ssh -p22 root@192.168.0.24 Last login: Wed Dec 13 11:10:32 2023 from 192.168.0.22 ![](https://file.jishuzhan.net/article/1736265661212004354/b270656f14c514c71282678a6b865f50.webp) ## 五、在group3中创建flume的任务文件 ### (一)在hurys22创建任务文件 a1 flume1-logger-flume.conf 配置 Source 用于监控 group.log 文件,配置 Sink 输出数据到下一级 Flume。 \[root@hurys22 group3\]# vi flume1-logger-flume.conf # Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = exec a1.sources.r1.command = tail -F /opt/flume/group.log a1.sources.r1.shell = /bin/bash -c # Describe the sink a1.sinks.k1.type = avro a1.sinks.k1.hostname = 192.168.0.24 a1.sinks.k1.port = 4141 # Describe the channel 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 ![](https://file.jishuzhan.net/article/1736265661212004354/c13487d6e42120a747a3e20a4e79334b.webp) 注意: 1、配置文件中的各项参数需要调式,这里只是为了演示,实现目的、打通路径即可!实际在项目中操作时需要调试参数。 2、a1.sources.r1.command = tail -F /opt/flume/group.log 为监控文件的group.log路径 ### (二)在hurys23创建任务文件 a2 flume2-netcat-flume.conf 配置 Source 监控端口 44444 数据流,配置 Sink 数据到下一级 Flume \[root@hurys23 group3\]# vi flume2-netcat-flume.conf # Name the components on this agent a2.sources = r1 a2.sinks = k1 a2.channels = c1 # Describe/configure the source a2.sources.r1.type = netcat a2.sources.r1.bind = hurys23 a2.sources.r1.port = 44444 # Describe the sink a2.sinks.k1.type = avro a2.sinks.k1.hostname = 192.168.0.24 a2.sinks.k1.port = 4141 # Use a channel which buffers events in memory a2.channels.c1.type = memory a2.channels.c1.capacity = 1000 a2.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a2.sources.r1.channels = c1 a2.sinks.k1.channel = c1 ![](https://file.jishuzhan.net/article/1736265661212004354/0c55d2afa3ea9fc182c7193918073787.webp) ### (三)在hurys24创建任务文件 a3 flume3-flume-logger.conf 配置 source 用于接收 flume1 与 flume2 发送过来的数据流,最终合并后 sink 到控制台。 \[root@hurys24 group3\]# vi flume3-flume-logger.conf # Name the components on this agent a3.sources = r1 a3.sinks = k1 a3.channels = c1 # Describe/configure the source a3.sources.r1.type = avro a3.sources.r1.bind = hurys24 a3.sources.r1.port = 4141 # Describe the sink a3.sinks.k1.type = logger # Describe the channel a3.channels.c1.type = memory a3.channels.c1.capacity = 1000 a3.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a3.sources.r1.channels = c1 a3.sinks.k1.channel = c1 ![](https://file.jishuzhan.net/article/1736265661212004354/833545835e6e8b66e8aefe403480e5ec.webp) ## 六、分别启动Flume任务文件 ### (一)首先在hurys24启动 a3任务 flume3-flume-logger.conf \[root@hurys24 flume190\]# bin/flume-ng agent -n a3 -f /usr/local/hurys/dc_env/flume/flume190/conf/group3/flume3-flume-logger.conf ![](https://file.jishuzhan.net/article/1736265661212004354/5883ee0fc23ea81da67ce9694c0b8acb.webp) ### (二)其次在hurys23启动 a2任务 flume2-netcat-flume.conf \[root@hurys23 flume190\]# bin/flume-ng agent -n a2 -f /usr/local/hurys/dc_env/flume/flume190/conf/group3/flume2-netcat-flume.conf ![](https://file.jishuzhan.net/article/1736265661212004354/887560ca694aeb7573a9c3906ba2e5b7.webp) ### (三)其次在hurys22启动 a1任务 flume1-logger-flume.conf \[root@hurys22 flume190\]# bin/flume-ng agent -n a1 -f /usr/local/hurys/dc_env/flume/flume190/conf/group3/flume1-logger-flume.conf ![](https://file.jishuzhan.net/article/1736265661212004354/dc3629ec2bd6ce9560d6104f03a3d42e.webp) ## 七、Flume任务运行执行状况 ### (一)hurys22 a1任务运行截图 ![](https://file.jishuzhan.net/article/1736265661212004354/0911d99395195d8451698a2f75ea50fd.webp) ### (二)hurys23 a2任务运行截图 ![](https://file.jishuzhan.net/article/1736265661212004354/adcf1dec3cf43f9f69efb32d9700f95a.webp) ### (三)hurys24 a3任务运行截图 ![](https://file.jishuzhan.net/article/1736265661212004354/3734ab7d4c1c329148f8ce4fe3ae8a4d.webp) ## 八、在 hurys22上向/opt/flume/目录下的 group.log 追加内容,观察hurys24的控制台打印情况 ### (一)在 hurys22上向/opt/flume/目录下的 group.log 追加内容 \[root@hurys22 group3\]# cd /opt/flume/ \[root@hurys22 flume\]# echo 'hello' \> group.log \[root@hurys22 flume\]# echo 'hello java' \> group.log ![](https://file.jishuzhan.net/article/1736265661212004354/c6bb50abd1ca95338cc1707bbaf47b6e.webp) ### (二)观察hurys24的控制台打印情况 ![](https://file.jishuzhan.net/article/1736265661212004354/7819b32a73bcbcaeec07b06402a8bb31.webp) ## **九、在 hurys23上用netcat 工具向 44444 端口发送数据,观察hurys24的控制台打印情况** ### (一)**在 hurys23上用netcat 工具向 44444 端口发送数据** \[root@hurys23 flume3\]# telnet hurys23 44444 Trying fe80::65e8:aec4:9ddc:391%eth0... telnet: connect to address fe80::65e8:aec4:9ddc:391%eth0: Connection refused Trying 192.168.0.23... Connected to hurys23. Escape character is '\^\]'. zhao qian OK sun li OK zhou wu OK zheng wang OK ![](https://file.jishuzhan.net/article/1736265661212004354/9cd17a947f202ae154308ca6d9a550c3.webp) ### (二)**观察hurys24的控制台打印情况** ![](https://file.jishuzhan.net/article/1736265661212004354/823822d58e09984625dd0a00e8eaa0ae.webp) Flume的聚合结构案例就到这里吧,有点明白了。 把2个Flume的数据聚合到第3个Flume里面,然后一起输出,这样省的一个个输出。节省功夫

相关推荐
zskj_qcxjqr31 分钟前
七彩喜艾灸机器人:当千年中医智慧遇上现代科技
大数据·人工智能·科技·机器人
洛克大航海4 小时前
Ubuntu安装Hbase
大数据·linux·数据库·ubuntu·hbase
GIOTTO情5 小时前
媒介宣发的技术革命:Infoseek如何用AI重构企业传播全链路
大数据·人工智能·重构
ApacheSeaTunnel6 小时前
新兴数据湖仓手册·从分层架构到数据湖仓架构(2025):数据仓库分层的概念与设计
大数据·数据仓库·开源·数据湖·dataops·白鲸开源·底层技术
落雪财神意6 小时前
股指10月想法
大数据·人工智能·金融·区块链·期股
柳贯一(逆流河版)6 小时前
ElasticSearch 实战:全文检索与数据聚合分析的完整指南
大数据·elasticsearch·全文检索
白鲸开源6 小时前
最佳实践:基于Apache SeaTunnel从MySQL同步到PostgreSQL
大数据·mysql·postgresql
QYResearch6 小时前
2025年全球移动变电站市场占有率及行业竞争格局分析报告
大数据
字节跳动数据平台6 小时前
为何底层数据湖决定了 AI Agent 的上限?
大数据
QYResearch6 小时前
自主机器人扫雪机行业现状与分析
大数据