Apache Flume- 静态拦截器-案例业务需求描述|学习笔记

简介: 快速学习 Apache Flume- 静态拦截器-案例业务需求描述,本节课讲 Flume 当中拦截器的一个实战实用。

开发者学堂课程【Flume 基础应用实战-企业全场景解决方案Apache Flume- 静态拦截器-案例业务需求描述】学习笔记,与课程紧密联系,让用户快速学习知识。  

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


Apache Flume- 静态拦截器-案例业务需求描述


目录

一、日志的采集和汇总


一、日志的采集和汇总

1、需求描述:

在企业当中,有两台服务器,分别叫 A 和 B,这两台服务器会产生不同的文件,access.log、nginx.log、web. Log,现在要求把 A、B 机器中的 access.log、nginx.log、web.log 采集汇总到 C 机器上,然后统一收集到 hdfs 中,但是在 hdfs 中要分门别类的存放,对应文件要对应目录:

/source/logs/access/20160101/**

/source/logs/nginx/20160101/**

/source/logs/web/20160101/**

注意难点在数据文件叫什么名字就把它放在对应的文件下。

需求图:

图片1.png

需求图描述:假设有一台叫 server 的服务器,在这台服务器中,某个路径会产生三种不同类型的日志:access.log、nginx.log、web. Log,要求通过 flume 把这三个文件最终上传到 hdfs 中,但放的时候不能乱放,要求按照它们的来源分门别类的存放到 /data/access/ , /web/ , /nginx/ 中。其中有三个文件不断变化,所以需要三个 source 来对接三个不同的数据,这三个 source 都应该能够用来追踪一个文件,不断变化的 source,exec 可以去执行一个 tail-f 的命令,channel 用内存和文件都可以,问题在于怎么样经过 sink 上传到 hdfs 中,还要分门别类的存放。可能有人会想,文件名字都告诉了,就往这三个不同路径上放就可以了。问题在于flume 收集到数据,并不是把文件拿过来,而是把数据里面的内容变成什么一个event,也就说在 flume 当中,数据都是一个个的 event,而 event 当中并不会表示来自于哪个文件。

图片2.png

2、当中只有文件的 body 信息。

3、解决方法——静态拦截器:

顾名思义,它能够去拦截 flume 收集到的数据,做某些处理之后再释放出数据。如果画图,相当于它可以在收集数据的时候做一个拦截,这个拦截器就是 flume 当中自带的一个拦截器,叫做静态拦截器。

图片3.png

静态连接器指的是它的一个功能点,是它内置的,它可以往采集到 event 当中加入自己添加的一些标识。

打开配置文件看一下,静态拦截器不需要我们自己开发,是它内置的。

图片4.png

在去描述 source 的时候,给它做一个指定,上面这些都跟之前一样,类型叫做exec, command 等于执行的命令,揭示这个文件。重点在下面,它添加一个拦截器名字叫做 i1,它的类型叫做 static 静态拦截器,它可以往采集到的数据 header中插入自己定义的 key-value 对,比如这里定义的 k 叫做 type,v 叫做 access,简单说它可以拦截到 event 往里面添加标识,后面就可以标识来进行梳理。

举例说明:

如果没有使用静态拦截器:

Event: { headers:{} body: 36 Sun Jun 218:26}

使用静态拦截器之后,自己添加 kv 标识对:

Event: { headers:{type=access} body: 36 Sun Jun 218:26)

Event:{ headers:{type=nginx} body: 36 Sun Jun 218:26 }

Event: { headers:{type=webl} body:I 36 Sun Jun 2 18:26 }

有了标识之后,再根据拦截插入的标识进行区分即可。

图片5.png

比如:给 access 文件添加 access 标识,给三个文件分别添加对应的标识,这样三个文件都有了各自的 kv 对。

静态拦截器的使用方法:

图片6.png

可以发现第三级路径是一个 %{type},这个 type 值就是上面添加的表示当中的 k 的值,它就会根据 k 对应的 v 来确定数据存放内容。

后续在存放数据的时候可以使用 flume 的规则语法获取到拦截器的 kv 内容。

相关文章
|
7月前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析
|
7月前
|
消息中间件 存储 监控
Flume+Kafka整合案例实现
Flume+Kafka整合案例实现
141 1
|
7月前
|
存储 SQL 大数据
带你读《Apache Doris 案例集》—— 01 招商信诺人寿 基于 Apache Doris 统一 OLAP 技术栈实践(1)
带你读《Apache Doris 案例集》—— 01 招商信诺人寿 基于 Apache Doris 统一 OLAP 技术栈实践(1)
218 0
|
7月前
|
Shell
Flume【问题记录 01】【at org.apache.flume.node.Application.main(Application.java:xxx) 类问题整理+其他类型问题总结】【避坑指南】
【2月更文挑战第17天】Flume【问题记录 01】【at org.apache.flume.node.Application.main(Application.java:xxx) 类问题整理+其他类型问题总结】【避坑指南】
348 2
|
1月前
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
|
2月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
35 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
2月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
45 3
|
2月前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
45 1
|
2月前
|
消息中间件 druid 大数据
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
35 2
|
2月前
|
消息中间件 分布式计算 druid
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
56 1

推荐镜像

更多