二百一十二、Flume——Flume实时采集Linux中的目录文件写入到HDFS中(亲测、附截图)

一、目的

在实现Flume实时采集Linux中的Hive日志写入到HDFS后,再做一个测试,用Flume实时采集Linux中的目录文件,即使用 Flume 监听Linux整个目录的文件,并上传至 HDFS中

**二、**前期准备

(一)安装好Hadoop、Hive、Flume等工具

(二)Linux中被Flume监控的文件目录

/opt/flume/upload

最初的文件目录为空,没有任何文件!

(三)在HDFS中创建文件夹/flume/upload,即写入的HDFS文件路径

三、创建Flume的任务文件

root@hurys23 conf\]# vi flume-dir-hdfs.conf # agent a3 a3.sources = r3 a3.sinks = k3 a3.channels = c3 # Describe/configure the source a3.sources.r3.type = spooldir a3.sources.r3.spoolDir = /opt/flume/upload a3.sources.r3.fileSuffix = .COMPLETED a3.sources.r3.fileHeader = true #忽略所有以.tmp 结尾的文件,不上传 a3.sources.r3.ignorePattern = (\[\^ \]\*\\.tmp) # Describe the sink a3.sinks.k3.type = hdfs a3.sinks.k3.hdfs.path = hdfs://hurys23:8020/flume/upload/%Y%m%d/%H #上传文件的前缀 a3.sinks.k3.hdfs.filePrefix = upload- #是否按照时间滚动文件夹 a3.sinks.k3.hdfs.round = true #多少时间单位创建一个新的文件夹 a3.sinks.k3.hdfs.roundValue = 1 #重新定义时间单位 a3.sinks.k3.hdfs.roundUnit = hour #是否使用本地时间戳 a3.sinks.k3.hdfs.useLocalTimeStamp = true #积攒多少个 Event 才 flush 到 HDFS 一次 a3.sinks.k3.hdfs.batchSize = 100 #设置文件类型,可支持压缩 a3.sinks.k3.hdfs.fileType = DataStream #多久生成一个新的文件 a3.sinks.k3.hdfs.rollInterval = 60 #设置每个文件的滚动大小大概是 128M a3.sinks.k3.hdfs.rollSize = 134217700 #文件的滚动与 Event 数量无关 a3.sinks.k3.hdfs.rollCount = 0 # Use a channel which buffers events in memory a3.channels.c3.type = memory a3.channels.c3.capacity = 1000 a3.channels.c3.transactionCapacity = 100 # Bind the source and sink to the channel a3.sources.r3.channels = c3 a3.sinks.k3.channel = c3 ![](https://file.jishuzhan.net/article/1732227091308482561/652c5315869eda086b54cbb821dc2050.webp) 注意: 1、配置文件中的各项参数需要调式,这里只是为了演示,实现目的、打通路径即可!实际在项目中操作时需要调试参数。 2、a3.sources.r3.spoolDir = /opt/flume/upload 为监控的目录文件在Linux中的路径 3、a3.sinks.k3.hdfs.path = hdfs://hurys23:8020/flume/upload/%Y%m%d/%H 为写入的HDFS文件路径 ## 四、启动Flume任务文件 \[root@hurys23 flume190\]# bin/flume-ng agent -n a3 -f /usr/local/hurys/dc_env/flume/flume190/conf/flume-dir-hdfs.conf ![](https://file.jishuzhan.net/article/1732227091308482561/dd5bdbf6b5a16d0d1f87f8097a074729.webp) ## 五、在Linux中被监控的目录文件夹创建新的文件 ### (一)到Linux目录文件下 \[root@hurys23 \~\]# cd /opt/flume/upload/ \[root@hurys23 upload\]# ll 总用量 0 ### (二)创建.txt文件 .log文件 .tmp文件 \[root@hurys23 upload\]# touch atguigu.txt \[root@hurys23 upload\]# touch atguigu.log \[root@hurys23 upload\]# touch atguigu.tmp ### (三)创建文件后,ll查看文件状态 \[root@hurys23 upload\]# ll 总用量 0 -rw-r--r-- 1 root root 0 12月 5 16:08 atguigu.log.COMPLETED -rw-r--r-- 1 root root 0 12月 5 16:08 atguigu.tmp -rw-r--r-- 1 root root 0 12月 5 16:08 atguigu.txt.COMPLETED 由于配置文件中忽略所有以.tmp 结尾的文件,不上传,因此除了atguigu.tmp没变之外,其他文件名都变了 #忽略所有以.tmp 结尾的文件,不上传 a3.sources.r3.ignorePattern = (\[\^ \]\*\\.tmp) ## 六、Flume任务运行时写入的HDFS文件状况 ### (一)目前时间戳 2023/12/5 16时 ![](https://file.jishuzhan.net/article/1732227091308482561/fa2a7a455ce59c8e7d5bfee10252d92e.webp) ### (二)HDFS生成了20231205文件夹、16文件夹及其upload文件 ![](https://file.jishuzhan.net/article/1732227091308482561/b048bac90c7055e06803b9b00d05b3c1.webp) ![](https://file.jishuzhan.net/article/1732227091308482561/ac7536f53d08c718d772b9f9cc9b3b43.webp) ## 七、关闭Flume任务 首先jps查看Flume任务,然后直接kill程序 \[root@hurys23 conf\]# jps 28385 NodeManager 27938 SecondaryNameNode 16642 RunJar 27496 NameNode 27657 DataNode 16113 Application 16310 Jps 28215 ResourceManager \[root@hurys23 conf\]# kill -9 16113 ![](https://file.jishuzhan.net/article/1732227091308482561/487195f9661cfbdeb18a6760605be972.webp) Flume实时采集Linux中的目录文件写入到HDFS的测试就先到这里,后面有问题的话再更新! 这种需求在实际项目中目前还没遇到过,就算提前熟悉一下吧,万一后面碰到呢

相关推荐
lhyzws22 分钟前
CENTOS上的网络安全工具(三十二) Portainer Kafka-Clickhouse部署(1)
linux·kafka·centos
q***04632 小时前
Linux环境下Tomcat的安装与配置详细指南
linux·运维·tomcat
BD_Marathon2 小时前
【Zookeeper】监听器原理
linux·分布式·zookeeper
稚辉君.MCA_P8_Java2 小时前
Gemini永久会员 快速排序(Quick Sort) 基于分治思想的高效排序算法
java·linux·数据结构·spring·排序算法
x***44012 小时前
linux 设置tomcat开机启动
linux·运维·tomcat
正在努力的小河3 小时前
Linux 块设备驱动实验
linux·运维·服务器
代码游侠3 小时前
学习笔记——数据结构学习
linux·开发语言·数据结构·笔记·学习
j***49564 小时前
Linux(CentOS)安装 Nginx
linux·nginx·centos
xuanzdhc4 小时前
Gitgit
java·linux·运维·服务器·c++·git
laocooon5238578864 小时前
win下制作一个简单的Cmake,完成运行效果
linux·运维·服务器