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 叫k1,channel 叫 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个,事物容量是100个,这100个要么一起成功,要么一起失败。

图片12.png

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

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

相关文章
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
407 3
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
427 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
800 8
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
401 3
|
消息中间件 druid 大数据
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
419 2
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
436 1
|
消息中间件 分布式计算 druid
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
421 1
|
存储 监控 Linux
Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
【2月更文挑战第17天】Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
493 1
Flume【部署 02】Flume监控工具Ganglia的安装与配置(CentOS 7.5 在线安装系统监控工具Ganglia + 权限问题处理 + Flume接入监控配置 + 图例说明)
|
存储 测试技术 API
Apache Hudi 负载类Payload使用案例剖析
Apache Hudi 负载类Payload使用案例剖析
504 4
|
消息中间件 分布式计算 关系型数据库
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
424 0

推荐镜像

更多