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

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

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

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


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

内容介绍:

一、  问题介绍

二、  解决方案

三、  具体操作

四、  检验参数效果

 

一、  问题介绍

在使用 flumehdfs进行文件上传的时候,可以控制文件以何种方式进行滚动。将前面所采集的数据控制文件与文件的大小进行滚动,大小是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 提供的一个小功能,接下来看怎么让它生效。打开服务器,首先cdconf当中,使用 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 官网做一个具体的了解,但这个参数非常的重要,控制文件闲置的时间策略,如果文件控制多少时间没有数据依然进行文件的滚动,这样就符合实际情况了。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
12天前
|
开发工具 iOS开发
如何导出iPhone手机中app共享文件夹的文件与闪退日志的收集
如何导出iPhone手机中app共享文件夹的文件与闪退日志的收集
17 1
|
14天前
|
安全 Python
Python 多进程日志输出到同一个文件并实现日志回滚
Python 多进程想要实现将日志输出到同一个文件中,使用同一个日志句柄,且日志需要按照日期,大小回滚。
|
15天前
|
SQL 分布式计算 监控
Flume实时读取本地/目录文件到HDFS
Flume实时读取本地/目录文件到HDFS
48 7
|
19天前
|
Oracle 关系型数据库 分布式数据库
实时计算 Flink版产品使用合集之日志文件快速增长如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
19天前
|
存储 关系型数据库 数据库
关系型数据库文件方式存储LOG FILE(日志文件)
【5月更文挑战第11天】关系型数据库文件方式存储LOG FILE(日志文件)
86 1
|
20天前
|
JavaScript Java API
【JavaEE】Spring Boot - 日志文件
【JavaEE】Spring Boot - 日志文件
9 0
|
20天前
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
15 1
|
20天前
|
Oracle 关系型数据库
|
1天前
|
SQL 关系型数据库 MySQL
|
1天前
|
SQL 监控 关系型数据库