二百一十二、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的测试就先到这里,后面有问题的话再更新!

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

相关推荐
>Andre<25 分钟前
UFS5.0标准中文全译·卷一:范围、术语与架构
android·linux·嵌入式硬件
用户05101225729634 分钟前
Linux下有关QT显示环境变量设置
linux·嵌入式
闲云自留地35 分钟前
告别命令恐惧症,openEuler 基础操作 + 文本 + 网络管理实战
linux·运维·云计算
剑指offer.1 小时前
ARM裸机开发-点亮LED灯
linux·服务器·嵌入式硬件
GeW1 小时前
工作忙.基础弱,也能快速拿RHCE?这套方法亲测有效
linux
Julien20042 小时前
自动挂载网络附加存储
linux·服务器·网络
codigger2 小时前
服务器又卡了?一篇讲透 Linux 性能排查(基础四件套 + perf/strace/火焰图)
linux·后端·性能优化
顶点多余3 小时前
9.18 面试题总结 --- 绿盟
linux·面试
挖掘狂人3 小时前
当生产环境"变慢",我用这套 perf + strace 30 分钟定位瓶颈
linux·运维·性能优化
傲世仙尊5 小时前
IO流起步-从fopen到文件描述符fd
linux