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

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

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

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


Apache Flume- 案例-监控采集文件夹变化(sqoopdir、HDFS)


内容介绍:

一、产生背景

二、确定组件

三、采集方案


一、产生背景

在公司服务器当中会有一个目录目录下它会源源不断产生新的文件,用专业的说法,叫做滚动。比每隔一天,每隔半小时滚动生成一个新的文件,现在要求一旦有新的文件产生滚动出来,就把这个新的文件给它采集收集到通过 flume上传到 HDFS 中去,这个需求听起来很简单,开发起来也很简单,要做的就是根据这个需求去确定三个组件有哪些能够满足需求


二、确定组件

通过对 flume 官网的一个学习了解或者去调研发现当中分别有对应的组件可以满足需求。

(1)采集源,即 source-- 监控文件目录: spooldir

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

source 和 sink 之间的传递通道 --channel,可用 file channel 也可以用内存channel

明确了这三个组件具体的类型之后,接下来是重点——把这三个类型编写在一个采集方案的配置文件并描述清楚,这样 flume 才能够去工作。


三、采集方案

图片1.png

首先,第一大块是针对三个组件做一个具体详细的描述,source 叫 r1,sink 叫k1channel 叫 c1。

图片2.png

Source 叫 spooldir source这是官网支持,它可以用于监控一个文件夹,或者叫做文件的目录。这个目录是 spoolDir,路径是 /root/logs,这个路径可以根据需求指定到服务器需要监控的那个目录下面加载文件的信息

图片3.png

整个采集方案最大的难点工作量在于 hdfs sink 当中把数据放到 hdfs 上去很简单指定一个路径放上去就可以了问题是当中有很多优化的参数需要注意首先a1 k1 type 等于 hdfs,这个选项表要把数据上传到 hdfs 中去,接下来上传的这个路径下面的第三和第四级目录是没有写死的动态目录

图片4.png

年月日时分,这就是 flume 支持的一种语法,可以动态地获取当前的时间,开启动态获取这些功能的时候呢,需要加载一个 uselocalTimeStamp 使用本地的时间戳,它就可以根据当前本地的时间来动态的填充里面具体

图片5.png

这个是文件的前缀信息

图片6.png

文件类型上传到 hdfs 是以什么类型存放是以普通的文本形式文件是一个序列化文件

图片7.png

一个是 round,俗称 round 三兄弟,一个是 roll 三兄弟,重点来看一下,这六个参数控制什么属性。

1、roll

图片8.png

 

从草图可以看出,如果不做任何滚动,一直往文件中写数据,文件内容就会越来越多,这时候 roll 滚动是指控制文件以何种方式滚动,而不是一直写在一个文件当中。有三种方式,以时间间隔、文件大小和 event 个数。

(1)rollInterval

默认值: 30

hdfs sink 间隔多长将临时文件滚动成最终目标文件,单位:秒;

如果设置成0,则表示不根据时间来滚动文件;

注:滚动 (ro11)指的是,hdfs sink 将临时文件重命名成最终目标文件,并新打开一个临时文件来写入数据;

(2)rollSize

默认值:1024

当临时文件达到该大小(单位:bytes) 时,滚动成目标文件;

如果设置成0,则表示不根据临时文件大小来滚动文件;

(3)rollCount

默认值:10

当 events 数据达到该数量时候,将临时文件滚动成目标文件;

如果设置成0,则表示不根据 events 数据来滚动文件;

图片9.png

强调:如果三个都配置,谁先满足谁出发滚动;如果不想以某个属性滚动,设置为0即可。

2、round

指是否开启时间上的舍弃,控制文件夹以多少时间间隔滚动。

(1)round

默认值:false

是否启用时间上的“舍弃”,这里的“舍弃”,类似于“四舍五入”。

(2)roundValue

默认值:1

时间上进行“舍弃”的值。

(3)roundUnit

默认值:seconds

时间上进行“舍弃”的单位,包含: second,minute,hour

示例:

al.sinks.k1.hdfs.path=/flume/events/%v-%-%d/%H%M/%S

al. sinks.k1.hdfs.round=true

al.sinks.k1.hdfs.roundValue=10

al.sinks.kl.hdfs.roundUnit=minute

//这个文件夹会以十分钟的频率滚动一次

当时间为2015-10-16 17:38:59时候,hdfs.path 依然会被解析为:

/flume/events/20151016/17:30/00

因为设置的是舍弃10分钟内的时间,因此,该目录每 10分钟新生成一个文件夹。

图片10.png

文件的滚动和文件夹的滚动,在企业当中用的非常多。

图片11.png

这里有 memory channel 内存来进行数据的缓存最大的可以存储的 event 数量是1000事物容量是100100个要么一起成功,要么一起失败

图片12.png

把这些参数都具体描述清楚之后,最后做一个主张,source 的 channel c1,sink 的 channel 也为 c1,这时候又相当于 channel 一手握着数据源,一手握着目的地构成了一个 agent flume。

这就是足于当下业务需求的一个采集方案,名字可以根据见名知意的规则命名起来,可以用来监视我们文件夹的一个滚动。

相关文章
|
2月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
72 3
|
19天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
81 34
|
2月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
69 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
53 2
|
7月前
|
SQL 分布式计算 监控
Flume实时读取本地/目录文件到HDFS
Flume实时读取本地/目录文件到HDFS
219 7
|
7月前
|
存储 机器学习/深度学习 分布式计算
Hadoop学习笔记(HDP)-Part.12 安装HDFS
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
197 0
Hadoop学习笔记(HDP)-Part.12 安装HDFS
|
7月前
|
存储 SQL 分布式计算
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
566 0
|
监控 Java
64 Flume采集文件到HDFS
64 Flume采集文件到HDFS
67 0
|
7月前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
7月前
|
存储 运维 监控
【Flume】flume 日志管理中的应用
【4月更文挑战第4天】【Flume】flume 日志管理中的应用

相关实验场景

更多

推荐镜像

更多