网站流量日志 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日志并进行多维度分析。
相关文章
|
5月前
|
存储 监控
63 Flume采集目录到HDFS
63 Flume采集目录到HDFS
33 0
|
8月前
|
消息中间件 数据采集 SQL
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)
|
2月前
|
应用服务中间件
weblogic配置、修改日志保存目录、配置滚动日志
weblogic配置、修改日志保存目录、配置滚动日志
|
4月前
|
SQL 数据采集 数据挖掘
nginx+flume网络流量日志实时数据分析实战
nginx+flume网络流量日志实时数据分析实战
101 0
|
4月前
|
消息中间件 存储 分布式计算
Hadoop学习笔记(HDP)-Part.20 安装Flume
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
54 0
Hadoop学习笔记(HDP)-Part.20 安装Flume
|
9月前
|
消息中间件 存储 分布式计算
Flume实现Kafka数据持久化存储到HDFS
Flume实现Kafka数据持久化存储到HDFS
416 0
|
4月前
|
SQL druid Java
三步实现maven工程集成logback日志框架(日志按天滚动生成文件)并附源码
三步实现maven工程集成logback日志框架(日志按天滚动生成文件)并附源码
78 0
|
5月前
|
监控 Java
64 Flume采集文件到HDFS
64 Flume采集文件到HDFS
30 0
|
8月前
|
消息中间件 数据采集 JSON
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(二)
1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(二)
|
9月前
|
Shell Perl
检测网卡流量,并按规定格式记录在日志中
检测网卡流量,并按规定格式记录在日志中
56 2