二百一十二、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

注意:

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

五、在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时

(二)HDFS生成了20231205文件夹、16文件夹及其upload文件

七、关闭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

Flume实时采集Linux中的目录文件写入到HDFS的测试就先到这里,后面有问题的话再更新!

这种需求在实际项目中目前还没遇到过,就算提前熟悉一下吧,万一后面碰到呢

相关推荐
行走的陀螺仪2 分钟前
Claude Code 从入门到实战(三):Hooks、Skills、SubAgents 高级扩展
linux·编辑器·vim
Brilliantwxx14 分钟前
【STM32】 内部 Flash 的 HAL 库函数详解与自定义封装实战
linux·服务器·网络
码途行者1 小时前
Linux 服务器 Golang 安装及环境变量配置
linux·运维·服务器
叼烟扛炮1 小时前
Linux 学习笔记(四十七):TCP 状态机与 tcpdump 抓包排雷实战
linux·网络·笔记·学习·tcp/ip·tcpdump
爱和冰阔落1 小时前
【Linux网络】UDP 聊天室怎么实现?从在线用户管理、消息广播到双线程收发与线程池
linux·运维·网络·udp
雪落漂泊1 小时前
Linux进程(三)概念:进程优先级与进程切换篇
linux·运维·服务器
拂拉氏1 小时前
【知识讲解】 Linux信号与可重入函数的认识
linux·运维·服务器
cynicism??1 小时前
Linux 与 ZXISOS 驱动开发架构对比
linux·驱动开发·架构
djjjx.2 小时前
Linux进程篇(十二):从零构建属于你的自定义 Shell 解释器
linux·运维·服务器
Gl�ria2 小时前
Hadoop 速刷:HDFS / MR / YARN / Spark / Hive
hadoop·hdfs·mr