Apache Flume-案例-监控采集文件夹变化 (exec source)|学习笔记

简介: 快速学习 Apache Flume-案例-监控采集文件夹变化 (exec source)

开发者学堂课程【Flume 基础应用实战-企业全场景解决方案Apache Flume-案例-监控采集文件夹变化 (exec source)】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/715/detail/12770


Apache Flume-案例-监控采集文件夹变化 (exec source)


内容介绍:

一、需求描述

二、演示

三、小结


一、需求描述

在业务系统当中有一个文件,文件内容会源源不断地变化、追加,比如服务器日志,它就是一个随着时间不断动态追加的过程。需求是要把这个文件不断追加、动态变化的内容实时地采集到,收集到 hdfs 中去,相当于这个文件当中追加一行内容,收集一条内容,追加两条,收集两条。

这个需求很明确,这时候要去确定 flume 当中三个组件的类型。最终要把数据采集到 hdfs 当中去,因此 sink 可以确定采用 hdfs sink ,可以跟 hdfs 组件进行对接,重点就在于有一个什么样的数据源,可以去对接一个动态变化的文件内容。如果现在不考虑 flume,用 linux 命令是否能满足这个需求,可以马上想到 tail-f 这个命令,它可以去实时的追加一个文件的变化,只要内容有变化,它就会把变化内容显示出来。

问题在于 tail-f 是 linux 命令,flume 怎么去执行 linux 命令?需去 flume 的官网查找,通过调研可以发现,在 flume 当中正好有一个 source 可以满足于去执行 linux 的命令叫做 exec source。打开官网来看一下,回到source当中来寻找一下exec source。

图片1.png

在这里可以发现这个 source 可以去运行一个给定 linux 的命令,然后把运行的结果作为数据收集到,比如 cat 命令,它读一个文件内容,把读取的内容作为数据源收集,tail-f 命令,因为 tail-f 也可以实时的变化,只要这些命令能够产生数据,追踪数据,它就可以把这些命令的结果作为数据收集到,正好满足于业务的需求。

(1)采集源,即 source-- 监控文件内容更新:exec ‘tail -File’ ;

(2)下沉目标,即 sink--HDFS 文件系统:hdfs sink;

(3)Source 和 sink 之间的传递通道--channel,可用 file channel 也可以用内存channel。

基于这三个就可以来配置采集方案。

图片2.png

首先,第一大块需要对三个组件起个名字。

图片3.png

描述 source,名字叫 r1,类型叫做 exec,这些是根据 flume 官网来做一个参考.它上面有介绍之后下面会有例子,

图片4.png

可以根据它的例子来做相关的编写。执行 tail-f 的命令,这个文件的路径就是需求当中需要去动态采集文件的路径,下面牵绑定的 channel 叫 c1。

图片5.png

sink 描述:类型叫做 hdfs,路径在 /flume/tailout 下,后面的三级,四级目录是动态获取的。后面的 round 表示十分钟会滚动生成一个文件夹,下面开启文件的滚动,一个3秒钟为间隔或20 byte 或者5 count,做一个调整,比如说以10秒为单位或者20秒为单位,看一下怎么更改。

图片6.png

指定 memory 来进行数据的缓存,大小是1000个 event,事物容量是100个,然后做一个绑定.

这些描述完之后,构成的文件就可以把该需求描述清楚。


二、演示

打开服务器来配置一下相关的方案,cd 到 conf 路径下。

图片7.png

通过名字,可以猜想到 tail-hdfs.conf 比较符合需求,打开,里面就是来动态采集数据文件变化内容,首先把名字复制一下。打开服务器,vim 做一个编辑,然后开始复制三个组件的名字,以及它最终的数据,复制过来之后,来做一个简单的修改看一下效果。

图片8.png

其他保持不变,做一个保存。接下来启动它,看能不能完成监听文件,来验证一下。

图片9.png

启动一下 flume 进程,启动命令可以根据之前的做一个修改编写,这些不需要记住,但是要知道,当需要的时候,可以从哪里去找到它即可。

输入 cd../

Bin/flume-ng agent -c conf -f conf/tail-hdfs.conf -n Dflume.root.logger=INFO,console

Component type: SINK,name:k1started

这里 sink k1 已经启动了,但是现在并没有文件的变化,所以它并不会去收集数据,从 hdfs 网站上也可以看到,现在并没有一个叫做 tailout 的数据出来,说明并没有数据收集,会产生一个问题, 怎么去模拟一下有一个文件能够实时的产生变化内容,可以写一个 shell 脚本来简单编写一个循环来满足。

While true;do data>>/root/logs/test.log;done

接下来执行,这时候可以简单地验证一下,

输入:mkdir logs

Tail -f log/test.log

可以发现数据在实时的变化,接下来就在第一台机器上来模拟数据的变化。

图片10.png

可以发现在这个路径下有两个目录,十秒钟一个文件,当然也可以开启其他的滚动方式,那么这样就完成了业务需求。


三、小结

1)exec source 可以执行指定的 linux command 把命令的结果作为数据进行收集

2)while true; do date>> /root/logs/test.log;done

使用该脚本模拟数据实时变化的过程

相关文章
|
25天前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
25天前
|
监控 Apache
【Flume】 Flume 区别分析:ExecSource、Spooldir Source、Taildir Source
【4月更文挑战第4天】 Flume 区别分析:ExecSource、Spooldir Source、Taildir Source
|
2月前
|
XML 数据格式
Flume【付诸实践 01】flume1.9.0版 配置格式说明+常用案例分享(ExecSource+SpoolingDirectorySource+HDFSSink+AvroSourceSink)
【2月更文挑战第19天】Flume【付诸实践 01】flume1.9.0版 配置格式说明+常用案例分享(ExecSource+SpoolingDirectorySource+HDFSSink+AvroSourceSink)
31 1
|
2月前
|
监控 API Apache
实战!配置DataDog监控Apache Hudi应用指标
实战!配置DataDog监控Apache Hudi应用指标
22 0
|
2月前
|
存储 监控 Linux
Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
【2月更文挑战第17天】Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
29 1
Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
|
5月前
|
数据可视化 JavaScript 关系型数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(五)FineBI可视化
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(五)FineBI可视化
44 0
|
5月前
|
SQL 消息中间件 关系型数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(四)实时计算需求及技术方案
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(四)实时计算需求及技术方案
78 0
|
5月前
|
SQL 消息中间件 分布式数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(三)离线分析
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(三)离线分析
64 0
|
5月前
|
消息中间件 存储 数据采集
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(二)数据源
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(二)数据源
54 0
|
5月前
|
存储 消息中间件 分布式数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(一)案例需求
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(一)案例需求
59 0

热门文章

最新文章

推荐镜像

更多