flume 实时监控读写操作例程

Flume最主要的作用就是,实时监控读取服务器本地磁盘的数据,将数据写入到HDFS、kafka等。

在这里插入图片描述

在这里插入图片描述

输入vi flume-env.sh进入修改

配置java路径

export JAVA_HOME=/root/software/jdk1.8.0_221

配置flume的运行内存(建议10G)

export JAVA_OPTS="-Xms10240m -Xmx10240m -Dcom.sun.management.jmxremote"

配小了在运行大量运算时容易报channel不足错误

在conf文件夹下创建job文件夹,用来存放执行任务的配置文件

在flume文件夹下创建flumeLogs文件夹,用于存放读取的数据

例程1:手动传入数据

首先在flume/conf/job文件夹下,创建vi netcat-flume-logger.conf

a1.sources=r1
a1.sinks=k1
a1.channels=c1

a1.sources.r1.type=netcat
a1.sources.r1.bind=localhost
a1.sources.r1.port=44444

a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100

a1.sinks.k1.type=logger

a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1

安装netcat
yum install -y nc

yum install telnet.* -y

客户端接收数据
nc -lk 55555

进入服务器端telnet localhost 55555
输入数据即可在客户端接收

启动监控文件夹命令

/root/software/flume/bin/flume-ng agent --name a1 --conf /root/software/flume/conf --conf-file /root/software/flume/conf/job/netcat-flume-logger.conf -Dflume.root.logger=INFO,console

可能会出现端口占用现象,这时需要杀掉占用端口的进程,或者重复新定义一个端口(在job配置文件中)
对于控制台推出不了,用CTRL+]键,这时会强制退到telnet命令界面下,再用quit退出就行了,百试百灵。

输入j

### Flume 实时监控单个文件和多个追加文件的配置示例 #### 1. 实时监控单个文件 Flume 提供了 `exec` Source 来实时监控单个文件。通过执行 Linux 命令(如 `tail -F`),可以实现对单个文件的实时监控并将其内容传输到目标系统。 以下是 `flume-exec-single.conf` 的配置示例: ```properties # 定义 agent 的名称为 a1 a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 配置 source (r1) a1.sources.r1.type = exec a1.sources.r1.command = tail -F /path/to/your/single/file.log a1.sources.r1.shell = /bin/bash # 配置 sink (k1) - 输出到控制台,实际应用中可以替换为 HDFS 等 a1.sinks.k1.type = logger # 配置 channel (c1) a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # 将 source 和 sink 绑定到 channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 ``` 启动命令如下: ```bash [xiao @hadoop102 flume-1.9.0]$ bin/flume-ng agent --conf conf/ --conf-file datas/flume-exec-single.conf --name a1 ``` 此配置通过 `tail -F` 命令实时读取单个文件的内容,并将数据发送到指定的目标系统[^4]。 --- #### 2. 实时监控多个追加文件 Flume 提供了 `Taildir Source` 来监控整个目录下的多个文件。`Taildir Source` 能够维护一个 JSON 格式的 `position File`,记录每个文件读取的最新位置,从而支持断点续传功能。 以下是 `flume-taildir-multiple.conf` 的配置示例: ```properties # 定义 agent 的名称为 a1 a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 配置 source (r1) a1.sources.r1.type = TAILDIR a1.sources.r1.positionFile = /opt/module/flume/taildir_position.json a1.sources.r1.filegroups = f1 a1.sources.r1.filegroups.f1 = /opt/module/flume/files/.* a1.sources.r1.fileHeader = true # 配置 sink (k1) - 输出到控制台,实际应用中可以替换为 HDFS 等 a1.sinks.k1.type = logger # 配置 channel (c1) a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # 将 source 和 sink 绑定到 channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 ``` 启动命令如下: ```bash [xiao @hadoop102 flume-1.9.0]$ bin/flume-ng agent --conf conf/ --conf-file datas/flume-taildir-multiple.conf --name a1 ``` 在此配置中,`Taildir Source` 会监控 `/opt/module/flume/files/` 目录下所有匹配正则表达式 `.*` 的文件,并将数据发送到指定的目标系统。`position File` 记录了每个文件的读取位置,确保在中断后能够继续从上次的位置读取数据[^3]。 --- #### 注意事项 - 在使用 `Taildir Source` 时,确保目录路径和正则表达式正确匹配目标文件。 - `position File` 是关键组件,用于记录文件读取状态,避免数据丢失或重复。 - 如果需要将数据写入 HDFS,可以将 `sink` 类型更改为 `hdfs`,并配置相应的 HDFS 路径和参数。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值