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

Apache Hadoop生态部署-Flume采集节点安装

目录

Apache Hadoop生态-目录汇总-持续更新

一:安装包准备

二:安装与常用配置

2.1:下载解压安装包

2.2:解决guava版本问题

2.3:修改配置

三:修复Taildir问题

3.1:Taildir Source能断点续传的原因

 3.2:Taildir Source滚动文件的问题

3.3:修改源码解决滚动文件的问题

修改TailFile.java文件

修改ReliableTaildirEventReader.java文件

3.4:打包重新发布


Apache Hadoop生态-目录汇总-持续更新

系统环境:centos7

Java环境:Java8

一:安装包准备

方式1)官网下载:http://archive.apache.org/dist/flume/

方式2)安装包--百度网盘

链接:https://pan.baidu.com/s/1rF5zGnZ72Yxq32re-hASbQ?pwd=yyds

提取码:yyds

二:安装与常用配置

2.1:下载解压安装包

cd /tmp
wget http://archive.apache.org/dist/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz
或者百度网盘下载,上传到这个目录下sudo tar -zxf /tmp/apache-flume-1.9.0-bin.tar.gz -C /usr/local/
sudo mv /usr/local/apache-flume-1.9.0-bin /usr/local/flume-1.9.0

2.2:解决guava版本问题

Exception in thread "SinkRunner-PollingRunner-DefaultSinkProcessor" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
# 解决guava版本问题 
rm /usr/local/flume-1.9.0/lib/guava-11.0.2.jar
与hadoop统一版本
cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar  /usr/local/flume-1.9.0/lib/

2.3:修改配置

cp /usr/local/flume-1.9.0/conf/flume-env.sh.template /usr/local/flume-1.9.0/conf/flume-env.sh
vim /usr/local/flume-1.9.0/conf/flume-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0

三:修复Taildir问题

所需的文件在百度网盘里都有

3.1:Taildir Source能断点续传的原因

Taildir Source 维护了一个 json 格式的 position File,其会定期的往 position File中更新每个文件读取到的最新的位置,因此能够实现断点续传。

Position File 的格式如下:

[{"inode":52580042,"pos":2,"file":"/tmp/flume/files/files1.txt"}]
解释:inode是linux服务器对文件的标识

注:Linux 中储存文件元数据的区域就叫做 inode,每个inode都有一个号码,操作系统用inode号码来识别不同的文件,Unix/Linux 系统内部不使用文件名,而使用 inode 号码来标记文件

 3.2:Taildir Source滚动文件的问题

Taildir Source 使用 inode + 绝对路径的方式记录读取的位置, 一旦遇到文件会定时滚动更新,导致文件被重复读取。

比如 hive.log每晚会更新为hive.log.xx.xx, 重建一个新的hive.log,就导致新产生的hive.log.xx.xx文件会被再次上传一次(修改文件名称 inode不变,但是文件路径变了)

3.3:修改源码解决滚动文件的问题

解决思路:修改源码,只监控inode

下载flume的源码包:http://archive.apache.org/dist/flume/1.9.0/

 目录:apache-flume-1.9.0-src\apache-flume-1.9.0-src\flume-ng-sources\flume-taildir-source

修改TailFile.java文件

修改flume-ng-sources\flume-taildir-source\src\main\java\org\apache\flume\source\taildir\TailFile.java文件

修改TailFile.java文件 122行
public boolean updatePos(String path, long inode, long pos) throws IOException {
//    if (this.inode == inode && this.path.equals(path)) {  # 原先的if (this.inode == inode) {  // 修改为setPos(pos);updateFilePos(pos);logger.info("Updated position, file: " + path + ", inode: " + inode + ", pos: " + pos);return true;}return false;
}

修改ReliableTaildirEventReader.java文件

修改flume-ng-sources\flume-taildir-source\src\main\java\org\apache\flume\source\taildir\ReliableTaildirEventReader.java文件

修改ReliableTaildirEventReader.jar 254行TailFile tf = tailFiles.get(inode);
//  if (tf == null || !tf.getPath().equals(f.getAbsolutePath())) { 原先的if (tf == null) {  // 修改为long startPos = skipToEnd ? f.length() : 0;tf = openFile(f, headers, inode, startPos);} else {

3.4:打包重新发布

 重新发布

把原来的jar包改个名字备份一下
mv /usr/local/flume-1.9.0/lib/flume-taildir-source-1.9.0.jar /usr/local/flume-1.9.0/lib/flume-taildir-source-1.9.0.jar.bak进入服务器客户端flume安装位置进入lib目录,把打包好的flume-taildir-source-1.9.0.jar包上传上去

相关文章:

Apache Hadoop生态部署-Flume采集节点安装

目录 Apache Hadoop生态-目录汇总-持续更新 一:安装包准备 二:安装与常用配置 2.1:下载解压安装包 2.2:解决guava版本问题 2.3:修改配置 三:修复Taildir问题 3.1:Taildir Source能断点续…...

【OpenFOAM】-算例解析合集

【OpenFOAM】-算例解析合集OlaFlowinterFoamOlaFlow 【OpenFOAM】-olaFlow-算例1- baseWaveFlume 【OpenFOAM】-olaFlow-算例2- breakwater 【OpenFOAM】-olaFlow-算例3- currentWaveFlume 【OpenFOAM】-olaFlow-算例4- irreg45degTank 【OpenFOAM】-olaFlow-算例5- oppositeS…...

数据库|(一)数据库和SQL概述

(一)数据库和SQL概述1.1 数据库的好处1.2 数据库的概念1.3 数据库结构特点1.1 数据库的好处 实现数据持久化使用完整的管理系统统一管理,便于查询 1.2 数据库的概念 DB 数据库(database),存储数据的仓库&…...

【java基础】自定义类

文章目录基本介绍自定义类字段方法构造器main方法基本介绍 什么是类这里就不过多赘述了,这里来介绍关于类的几个名词 类是构造对象的模板或蓝图由类构造对象的过程称为创建类的实例封装就是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现…...

7、STM32 FSMC驱动SRAM

本次使用CubeMx配置FSMC驱动SRAM,XM8A51216 IS62WV51216 原理图: 注意:FSMC_A0必须对应外部设备A0引脚 一、FSMC和FMC区别 FSMC:灵活的静态存储控制器 FMC:灵活存储控制器 区别:FSMC只能驱动静态存储控制器(如&…...

七、虚拟机栈

虚拟机栈出现的背景 1.由于跨平台性的设计,Java的指令都是根据栈来设计的,不同平台CPU架构不同,所以不能设计为基于寄存器的。 2.优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同…...

Linux其他常用命令

Linux其他常用命令查找文件find 命令功能非常强大,通常用在特定目录下搜索符合条件的文件如果省略路径,表示在当前文件夹下查找之前学习的通配符,在使用 find 命令时同时可用演练目标1.搜索桌面目录下,文件名包含1的文件find Desk…...

一次性打包学透 Spring

不知从何时开始,Spring 这个词开始频繁地出现在 Java 服务端开发者的日常工作中,很多 Java 开发者从工作的第一天开始就在使用 Spring Framework,甚至有人调侃“不会 Spring 都不好意思自称是个 Java 开发者”。 之所以出现这种局面&#xf…...

1080T、2080T、4070T显卡的深度学习性能测试和结论

先说结论: 4070T显卡FP32的训练和推理速度跟3090应该基本类似。但由于显存12G偏低,4070T不太适合如今的深度学习模型训练(新手列外,大部分模型都能训练起来,耗电也相对很低),更适合测试最新的一…...

SpringBoot搭建SpringMVC项目

前言据我的了解,现在不管是大公司或是小公司,如果使用java开发一个web项目,大部分都会选择使用SpringBoot,关于Springboot的好处,就不在这里过多赘述,总之Springboot有一套完整的生态,从项目构建…...

Prescriptive Analytics for Flexible Capacity Management

3 本节根据Netessine等人(2002年)和Bassok等人(1999年)对我们解决的容量规划问题进行了正式描述。考虑一家以pi(I1,…,I)的单价提供I服务的公司。在每个计划周期t∈{1,……...

超简单的待办事项列表管理器todo

什么是 todo ? todo 是一个自托管的 todo web 应用程序,可让您以简单且最少的方式跟踪您的 todo。📝 老苏觉得和之前介绍的 KissLists 比较像 文章传送门:最简单的共享列表服务器KissLists 官方提供了 Demo 演示站点:https://tod…...

在C#中初测OpencvSharp4

一、配置OpenCV 首先,我们新建一个工程,然后就是给这个工程配置OpenCV了,最简单的方法还是Nuget,来我们右键一个Nuget: 打开Nuget后,你可以直接输入OpenCVSharp4来查找,当然,如果你…...

洛谷P1123 取数游戏(C++)(DFS)

目录 1.题目 题目描述 输入格式 输出格式 输入输出样例 说明/提示 2.AC 1.题目 题目描述 一个N \times MNM的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻88个格…...

Python Qt6快速入门-嵌入PyQtGraph图表

嵌入PyQtGraph 文章目录 嵌入PyQtGraph1、PyQtGraph介绍2、创建PyQtGraph小部件3、绘图样式配置3.1 背景颜色3.2 线条颜色、线宽和样式配置3.3 线标记(Line Markers)3.4 绘制标题3.5 轴标题3.6 图例(Legends)3.7 轴范围限制3.8 绘制多组数据3.10 画布清空4、更新数据5、总结1、…...

Mac电脑_GitHub提交项目至仓库

第一步(准备工作): Mac 电脑自带 git , 无需安装 1. 创建一个项目 demo1 在 github 上 2. 创建 ssh 密钥 打开终端: ssh-keygen -t rsa -C "your_emailyouremail.com" 此处输入两次密码, 直接…...

Android自定义View实现横向的双水波纹进度条

效果图:网上垂直的水波纹进度条很多,但横向的很少,将垂直的水波纹改为水平的还遇到了些麻烦,现在完善后发布出来,希望遇到的人少躺点坑。思路分析整体效果可分为三个,绘制圆角背景和圆角矩形,绘…...

Python 之 Pandas 分组操作详解和缺失数据处理

文章目录一、groupby 分组操作详解1. Groupby 的基本原理2. agg 聚合操作3. transform 转换值4. apply二、pandas 缺失数据处理1. 缺失值类型1.1 np.nan1.2 None1.3 NA 标量2. 缺失值处理2.1 查看缺失值的情形2.2 缺失值的判断2.3 删除缺失值2.4 缺失值填充在开始之前&#xff…...

【人工智能 AI】什么是人工智能? What is Artificial Intelligence

目录 Introduction to Artificial Intelligence人工智能概论 What is Artificial Intelligence? 什么是人工智能?...

17、触发器

文章目录1 触发器概述2 触发器的创建2.1 创建触发器语法2.2 代码举例3 查看、删除触发器3.1 查看触发器3.2 删除触发器4 触发器的优缺点4.1 优点4.2 缺点4.3 注意点尚硅谷MySQL数据库教程-讲师:宋红康 我们缺乏的不是知识,而是学而不厌的态度 在实际开发…...

Real-ESRGAN-GUI:如何用AI双引擎将模糊图片一键变高清

Real-ESRGAN-GUI:如何用AI双引擎将模糊图片一键变高清 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 还在为模糊的老照片、低分辨率的动漫图片而烦恼吗&…...

小白也能玩转AI翻译:translategemma图文翻译快速入门指南

小白也能玩转AI翻译:translategemma图文翻译快速入门指南 1. 认识translategemma:你的私人翻译助手 translategemma-12b-it是Google基于Gemma 3模型开发的开源翻译模型,它能同时处理文本和图片中的文字翻译。想象一下,你正在国外…...

2026年知网AIGC检测卡在20%降不下去怎么办?这3招解决

直接说方案,不绕弯子。知网AIGC检测不通过、降AIGC率、降AI这个问题,核心是找准降不下去的原因,再用对工具。 我花了一个月测出来的结论:用嘎嘎降AI(www.aigcleaner.com) 全文上传,基本能解决大…...

实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议

实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议 当CLIP遇上业务场景,90%的开发者都会遇到相同的问题:模型在新类别上的表现总是不尽如人意。上周团队用默认参数跑跨模态检索任务时,基类准确率82%的…...

PX4固件二次开发入门:从源码结构到第一个自定义模块(基于v1.11版本)

PX4固件二次开发实战:从源码解析到自定义模块开发(v1.11版本) 当你第一次打开PX4的源码仓库,面对数十个文件夹和数千个文件时,那种扑面而来的压迫感我深有体会。作为过来人,我想分享一套系统性的二次开发方…...

3步实现HTML到Word的智能转换:html-to-docx技术深度解析

3步实现HTML到Word的智能转换:html-to-docx技术深度解析 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 你是否曾遇到过这样的场景?精心设计的网页报告需要转换为Word文档进行…...

探索DeepCAD:基于深度学习的CAD模型生成技术入门

探索DeepCAD:基于深度学习的CAD模型生成技术入门 【免费下载链接】DeepCAD code for our ICCV 2021 paper "DeepCAD: A Deep Generative Network for Computer-Aided Design Models" 项目地址: https://gitcode.com/gh_mirrors/de/DeepCAD 副标题&…...

Spring Boot项目实战:用ShardingSphere-JDBC 5.3.2搞定PostgreSQL分库分表,附完整配置流程

Spring Boot与ShardingSphere-JDBC深度整合:PostgreSQL分库分表实战指南 当你的应用用户量突破百万级,单表数据量超过千万行时,是否经常遇到查询响应变慢、写入性能下降的问题?作为经历过多次系统扩容的老兵,我想分享一…...

经典35kW V型磁钢永磁同步电机设计:基于Maxwell的成熟方案解析

基于Maxwell设计的 经典35kW,外径290 轴向长度88 3000RPM,111.5Nm, 6极36槽永磁同步电机(PMSM)设计案例(V型磁钢),该案例已制作样机,方案成熟,运行稳定,可直接用于生产&#xff0c…...

快速掌握C#语言基础知识点(16.访问修饰符)

关注我的动态 namespace _16.访问修饰符 {internal class Program {//私有内部类,被嵌套定义,能被直接外部类访问,外部类之外无法访问private class Class_Private{//公有public int a { get; set; }//私有private int b { get; set; }//受保…...