网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动| 学习笔记

简介: 快速学习网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第二阶段):网站流量日志 Flume 收集--hdfs--基于文件闲置策略滚动】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/694/detail/12186


网站流量日志 Flume 收集--hdfs--基于文件闲置策略滚动

内容介绍:

一、  问题介绍

二、  解决方案

三、  具体操作

四、  检验参数效果

 

一、  问题介绍

在使用 flume往hdfs进行文件上传的时候,可以控制文件以何种方式进行滚动。将前面所采集的数据控制文件与文件的大小进行滚动,大小是128M,但是发现了一个现象,当数据没有满足滚动条件时,这个文件将会一直处在临时状态,原因是没有满足条件,所以无法进行滚动。

image.png

必须满足128M,才可以把这个文件关闭,然后重新打开一个新的文件往里面写数据。这在企业当中将会显得非常尴尬,因为这个文件一直是一个临时文件的状态。如果手动把这个 flume 结束,那么会完成滚动,但是企业当中肯定不能做。

进行演示:打开 flume 路径,ctrl+c结束滚动,flume 境关闭,然后刷新浏览器,发现文件名的.m去掉了

image.png

说明它不再是一个临时性文件,但这样做在企业中是不现实的,这时候产生了一个问题:当通过 flume 上传文件至 hdfs 当中,如果控制文件滚动的条件不满足怎么办?

 

二、  解决方案

通过配置文件,可以看到当下有三种条件:第一个是时间的间隔控制滚动。第二个是文件的大小控制滚动,第三个是 event 数量滚动。如果不满足,位于我们hdfs上的文件将会一直处于临时状态,这个文件后面会加一个.tmp。

事实上在 flume 当中,还有一个参数叫做基于文件的闲置时间的策略。闲置时间英文叫做 timeout,用 flume 往 hdfs 写文件的时候,如果经过多长时间没有数据,这时候也要发生一次文件的滚动,这个参数的默认值是零,就是说默认情况下闲置时间是没有的,就是没有数据的才会一直等待。既然有了这个参数,就可以把这个参数做修改。比如说设置为30秒,那么这30秒意味着如果经过30秒时间依然没有数据写入,那么这个时间也满足,也会发生一次滚动。这时候解决这个问题就非常的方便,需要在配置当中加入这个参数。

 

三、  具体操作:基于文件空闲时间滚动

在 flume 当中开启这样一个参数hdfs.idleTimeout,默认值是0。如果配置指定时间比如配置30秒,意味着如果30秒之内文件没有数据写入,那么即使其他的滚动条件不满足,此时依然进行文件的滚动,避免文件一直处于临时状态。

这就是 flume 提供的一个小功能,接下来看怎么让它生效。打开服务器,首先cd到conf当中,使用 vim 打开配置文件 taildir,这篇文件是跟 hdfs 相关的,要写在sink当中,按insert进入编辑模式,在里面加上参数,前面的参数可以照着写,a1.sinks.k1.hdfs.,然后加上idleTimeout,再在后面写一个等号,它的默认单位是秒。

image.png

比如这里写20秒,这个意味着如果20秒没有数据写入,比如说这个文件空闲超过20秒的话,它依然会进行滚动。

四、  检验参数效果

确认无误之后保存这个参数,保存之后重新启动,用刚才的命令启动回车,启动完之后为了方便,把刚才这个文件名字重新改一个名字,cd到根目录下,之前叫做20181101,用cp命令给它改个名字叫20181102,保证两个文件不重复。

image.png

接下来把这一个新的文件20181102再放到weblog/test2路径下,这个时候执行相当于这个路径下又产生了一个新的文件,而且这个文件的格式也符合监控的格式。回车,文件已经发生变化,接下来开始往里面写,发现这个文件现在是一个.tmp文件,说明它还没有满足滚动,但是下来已经没有数据了,等待一会儿,显示write call back,打开浏览器刷新,发现文件发生了滚动。

image.png

相当于刚才配置的参数在做一个兜底操作,也就是说如果没有满足128M并且达到了这个空闲闲置的时间,那么依然进行文件的滚动,这样操作就会非常方便。这个间隔可以根据企业当中来自己配置,它的单位是秒,可以配置20秒,可以配置30秒,可以配置50秒,这样可以避免因为后面没有数据或者没有相关的东西,使得条件不满足,一直处于临时状态,这就是 flume 提供的一些参数属性。具体其他的想了解可以打开 flume 官网做一个具体的了解,但这个参数非常的重要,控制文件闲置的时间策略,如果文件控制多少时间没有数据依然进行文件的滚动,这样就符合实际情况了。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
11月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
347 2
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
2974 28
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
639 34
|
人工智能 运维 监控
一招高效解析 Access Log,轻松应对泼天流量
一招高效解析 Access Log,轻松应对泼天流量
380 0
一招高效解析 Access Log,轻松应对泼天流量
|
存储 SQL 关系型数据库
【赵渝强老师】PostgreSQL的运行日志文件
PostgreSQL的物理存储结构包括数据文件、日志文件等。运行日志默认未开启,需配置`postgresql.conf`文件中的相关参数如`log_destination`、`log_directory`等,以记录数据库状态、错误信息等。示例配置中启用了CSV格式日志,便于管理和分析。通过创建表操作,可查看生成的日志文件,了解具体日志内容。
661 3
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL的全量日志文件
MySQL全量日志记录所有操作的SQL语句,默认禁用。启用后,可通过`show variables like %general_log%检查状态,使用`set global general_log=ON`临时开启,执行查询并查看日志文件以追踪SQL执行详情。
468 4
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
存储 运维 监控
【Flume】flume 日志管理中的应用
【4月更文挑战第4天】【Flume】flume 日志管理中的应用
|
消息中间件 数据采集 SQL
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
|
11月前
|
数据采集 缓存 大数据
【赵渝强老师】大数据日志采集引擎Flume
Apache Flume 是一个分布式、可靠的数据采集系统,支持从多种数据源收集日志信息,并传输至指定目的地。其核心架构由Source、Channel、Sink三组件构成,通过Event封装数据,保障高效与可靠传输。
566 1

热门文章

最新文章