当前位置: 首页 > news >正文

Flume的安装与使用 -- flume自定义拦截器 -- tailDir + Memory + HDFS案例

文章目录

  • 前言
  • 一、安装
    • 1、上传、解压、重命名
    • 2、修改环境变量
    • 3、修改配置文件
  • 二、案例(tailDir + Memory + HDFS)
  • 三、flume中的自定义拦截器
    • 1、导包
    • 2、导入打包插件
    • 3、代码


前言

Flume – 一般用于采集日志数据
Sqoop – 一般用于采集数据库中的数据

一、安装

1、上传、解压、重命名

flume下载地址
提取码: 1234

cd /opt/modules
# 上传
# 解压
tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/installs
# 重命名
mv /opt/modules/apache-flume-1.9.0-bin /opt/modules/flume

2、修改环境变量

vi /etc/profireexport FLUME_HOME=/opt/installs/flume
export PATH=$PATH:$FLUME_HOME/bin

3、修改配置文件

cd /opt/installs/flume/conf
mv flume-env.sh.template flume-env.sh#添加如下配置:
export JAVA_HOME=/opt/installs/jdk

二、案例(tailDir + Memory + HDFS)

Source(数据来源) + channels(通道) + sinks(数据下沉的地方) 组成了flume的agent

tailDir 是用来监控多个文件夹下的多个文件的,只要文件内容发生变化,就会再次的进行数据的抽取

在/opt/installs/flume/conf下创建一个myconf文件夹
并在myconf下创建一个taildir-memory-hdfs.conf 文件

在 taildir-memory-hdfs.conf 文件添加如下内容
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = TAILDIR
a1.sources.r1.channels = c1
a1.sources.r1.filegroups = f1
#  . 代表的意思是一个任意字符   * 代表前面的字符出现0到多次
a1.sources.r1.filegroups.f1 = /home/scripts/datas/.*txt.*a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000a1.sinks = k1
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = /flume3/logs

执行

cd /opt/installs/flume/conf/myconf/flume-ng agent -n a1 -c ./ -f taildir-memory-hdfs.conf -Dflume.root.logger=INFO,console

三、flume中的自定义拦截器

1、导包

<dependency><groupId>org.apache.flume</groupId><artifactId>flume-ng-core</artifactId><version>1.9.0</version>
</dependency>

2、导入打包插件

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.1.1</version><configuration><!-- 禁止生成 dependency-reduced-pom.xml--><createDependencyReducedPom>false</createDependencyReducedPom></configuration><executions><!-- Run shade goal on package phase --><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><relocations><relocation><!-- 解决包冲突 进行转换--><pattern>com.google.protobuf</pattern><shadedPattern>shaded.com.google.protobuf</shadedPattern></relocation></relocations><artifactSet><excludes><exclude>log4j:*</exclude></excludes></artifactSet><filters><filter><!-- Do not copy the signatures in the META-INF folder.Otherwise, this might cause SecurityExceptions when using the JAR. --><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude></excludes></filter></filters><transformers><!-- 某些jar包含具有相同文件名的其他资源(例如属性文件)。 为避免覆盖,您可以选择通过将它们的内容附加到一个文件中来合并它们--><transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>reference.conf</resource></transformer><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>mainclass</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build>

3、代码

//实现Interceptor接口,并实现里面的四个方法
public class DemoInterceptor implements Interceptor{// 具体的逻辑代码,根据需求自行编写
}
// 在内部定义一个类,实现Builder接口public static class BuilderEvent implements Builder{@Overridepublic Interceptor build() {return new DemoInterceptor();}@Overridepublic void configure(Context context) {}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 技术美术一百问(02)
  • 03请求响应(实体参数、集合参数、时间日期参数和Json参数)
  • 一、Numpy入门
  • 【IP协议】解决 IP 地址不够用的问题(IP地址管理:动态分配、NAT、Ipv6)
  • soc及其相关概念
  • RT-Thread 整体分析
  • torchvision 教程
  • PCIe扫盲(七)
  • 探秘淘宝商品详情原数据:主图与数据的神秘获取之旅
  • 【计算机毕业设计】五台山景点购票系统 ——后附源码
  • 【Git】常见命令(仅笔记)
  • 深度剖析iOS渲染
  • SpringCloud的学习(二),Consul服务注册与发现、分布式配置,以及 服务调用和负载均衡
  • linux 解压缩
  • 商务标的流程
  • crontab执行失败的多种原因
  • fetch 从初识到应用
  • HTTP那些事
  • Mithril.js 入门介绍
  • PAT A1092
  • SQLServer之创建显式事务
  • SSH 免密登录
  • uva 10370 Above Average
  • vue 配置sass、scss全局变量
  • 从伪并行的 Python 多线程说起
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 如何胜任知名企业的商业数据分析师?
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 详解移动APP与web APP的区别
  • 延迟脚本的方式
  • 正则学习笔记
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 函数计算新功能-----支持C#函数
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #ifdef 的技巧用法
  • #window11设置系统变量#
  • (2024)docker-compose实战 (8)部署LAMP项目(最终版)
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (35)远程识别(又称无人机识别)(二)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (C语言)字符分类函数
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (第一天)包装对象、作用域、创建对象
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (离散数学)逻辑连接词
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (三分钟)速览传统边缘检测算子
  • (十八)Flink CEP 详解
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十一)c52学习之旅-动态数码管
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (译)计算距离、方位和更多经纬度之间的点