Hudi程序导致集群RPC偏高问题分析

1、背景

Hudi程序中upsert操作频繁,过多的删除和回滚操作,导致集群RPC持续偏高

2、描述

hudi采用的是mvcc设计,提供了清理工具cleaner来把旧版本的文件分片删除,默认开启了清理功能,可以防止文件系统的存储空间和文件数量的无限增长。

3、清理保留策略

清理旧文件需要考虑数据查询的情况,有些长查询会占用着旧版本的文件,需要设置合适的清理策略来保留一定数量的commit或者文件版本,以提高系统的容错性

  • KEEP_LATEST_COMMITS:默认策略,表示保留最后n次提交,默认为10,通过参数hoodie.cleaner.commits.retained​或clean.retain_commits​(flink)设置
  • KEEP_LATEST_FILE_VERSIONS:保留最后n个文件版本,默认为3,通过参数hoodie.cleaner.fileversions.retained设置​
  • KEEP_LATEST_BY_HOURS:保留最后n小时,默认24小时,通过参数hoodie.cleaner.hours.retained设置,这是0.11版本后新增的
4、 清理触发策略

目前仅支持一种触发清理的策略:CleaningTriggerStrategy#NUM_COMMITS,即根据提交的次数,默认为1,可以通过设置参数hoodie.clean.max.commits​进行修改,在flink job的每次checkpoint时都会进行触发策略的条件判断,所以在两次chekpoint之间发生过1次或n次提交,都会触发清理动作。

5、清理流程分析 
5.1、清理器初始化

清理逻辑是被包装成一个flink sink,在HoodieTableSink#getSinkRuntimeProvider中进行初始化

如果是mor表且开启了异步合并(compaction.async.enabled),则创建CompactionCommitSink,继承了CleanFunction,所以包含了清理逻辑,这是由于SQL API中一个SinkRuntimeProvider不支持多个sink.
否则,直接将CleanFunction作为sink,这种情况必需启用异步清理配置clean.async.enabled,因为CleanFunction的主要方法都判断了是否为异步清理。

5.2、清理启动入口
  1. compact成功后同步清理
    需要满足条件:1)mor表,2)启用异步合并compaction.async.enabled,3)禁用异步清理clean.async.enabled。入代码在CompactionCommitSink#doCommit中:
if (!conf.getBoolean(FlinkOptions.CLEAN_ASYNC_ENABLED)) {this.writeClient.clean();
}
  1. checkpoint时异步清理
    需要满足条件:1)非mor表或启用异步合并compaction.async.enabled,2)启用异步清理clean.async.enabled。入口代码在CleanFunction#snapshotState中:
if (conf.getBoolean(FlinkOptions.CLEAN_ASYNC_ENABLED) && !isCleaning) {this.writeClient.startAsyncCleaning();this.isCleaning = true;
}
 6、清理逻辑执行

清理逻辑的流程,主要包含有三个步骤:生成清理计划、刷新ActiveTimeline、执行清理计划

  1. 如果处理的instant状态为requested需要先转换为inflight状态(生成xxx.clean.inflight文件),表示开始清理。
  2. 执行清理clean(context, cleanerPlan),根据清理计划的数据进行文件删除即可,首先删除每个分区下需要清理的文件,然后删除需清理的分区目录,最后收集统计数据返回。
  3. 清理成功后将infight状态转换为completed状态,表示清理完成。

参考:

All Configurations | Apache Hudi

hudi系列-旧文件清理(clean)-天翼云开发者社区 - 天翼云 (ctyun.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/262270.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sentinel中监听器的运用--规则管理

sentinel中监听器的运用–规则管理 规则结构 类图关系 类关系图如下 Rule 将规则抽象成一个类, 规则与资源是紧密关联的, 也就是说规则作用于资源。因此, 我们需要将规则表示为一个类, 并包含一个获取资源的方法 这里采用接口的原因就是规则是一个抽象概念而非具体实现。…

UE5 C++ 创建可缩放的相机

一.要将相机设置在Pawn类里 1.在MyPawn头文件里,加上摇臂和相机组件 #include "GameFramework/SpringArmComponent.h" #include "Camera/CameraComponent.h" 2.在Pawm里声明SceneComponet,SpringArmComponent,CameraComponent组件…

OpenAI发布Sora模型,可根据文字生成逼真AI视频

早在2022年11月30日,OpenAI第一次发布人工智能聊天机器人ChatGPT,随后在全世界掀起了人工智能狂潮,颠覆了一个又一个行业。在过去的一年多的时间里,chatGPT的强大功能改变了越来越多人的工作和生活方式,成为了世界上用…

Sora----打破虚实之间的最后一根枷锁----这扇门的背后是人类文明的晟阳还是最后的余晖

目录 一.Sora出道即巅峰 二.为何说Sora是该领域的巨头 三.Sora无敌的背后究竟有怎样先进的处理技术 1.Spacetime Latent Patches 潜变量时空碎片,建构视觉语言系统 2.扩散模型与Diffusion Transformer,组合成强大的信息提取器 3.DiT应用于潜变量时…

安全生产:AI视频智能分析网关V4如何应用在企业安全生产场景中?

随着科技的不断进步,视频智能分析技术在安全生产领域中的应用越来越广泛。这种技术通过计算机视觉和人工智能算法,可以对监控视频进行自动分析和处理,以实现多种功能,如目标检测、行为识别、异常预警等。今天我们以TSINGSEE青犀AI…

深度学习发展里程碑事件2006-2024

2006-2024年,深度学习发展经历众多的里程碑事件,一次次地刺激着人们的神经,带来巨大的兴奋。电影还在继续,好戏在后面,期待…… 2006年 深度信念网络(DBNs):Geoffrey Hinton与他的学…

Linux系列讲解 —— 【Vim编辑器】在Ubuntu18.04中安装新版Vim

平时用的电脑系统是Ubuntu18.04,使用apt安装VIM的默认版本是8.0。如果想要安装新版的Vim编辑器,只能下载Vim源码后进行编译安装。 目录 1. 下载Vim源码2. 编译3. 安装4. 遇到的问题4.1 打开vim后,文本开头有乱码现象。4.2 在Vim编辑器中&…

宏观视角下的浏览器

宏观视角下的浏览器 Chrome架构线程 VS 进程进程架构 TCP协议IP:把数据包送达目的主机UDP:把数据包送达应用程序TCP:把数据完整地送达应用程序 HTTP请求流程构建请求查找缓存准备IP地址和端口等待TCP队列建立TCP连接发送HTTP请求 服务器端处理…

Apache服务

目录 引言 一、常见的http服务程序 (一)lls (二)nginx (三)Apache (四)Tomcat 二、Apache特点 三、Apache服务的安装 (一)yum安装及配置文件 1.配置…

#11vue3中使用el-dialog展示与关闭交由父组件控制的写法

目录 1、法一:通过defineEmits调用父组件方法 1.1、父组件 1.2、子组件(CONTENT) 2、法二:通过difineExpose暴露子组件属性 2.1、父组件 2.2、子组件(Child) 1、法一:通过defineEmits调用…

WordPress后台自定义登录和管理页面插件Admin Customizer

WordPress默认的后台登录页面和管理员,很多站长都想去掉或修改一些自己不喜欢的功能,比如登录页和管理页的主题样式、后台左侧菜单栏的某些菜单、仪表盘的一些功能、后台页眉页脚某些小细节等等。这里boke112百科推荐这款可以让我们轻松自定义后台登录页…

【Git】:标签功能

标签功能 一.标签操作二.推送远程标签 标签 tag ,可以简单的理解为是对某次commit的⼀个标识,相当于起了⼀个别名。例如,在项⽬发布某个版本的时候,针对最后⼀次commit起⼀个v1.0这样的标签来标识⾥程碑的意义。这有什么⽤呢&…

计算机网络基础之计算机网络组成与分类

计算机网络基础 计算机网络是计算机技术与通信技术发展相结合的产物,并在用户需求的促进下得到进一步的发展。通信技术为计算机之间的数据传输和交换提供了必需的手段,而计算机技术又渗透到了通信领域,提高了通信网络的性能。 计算机网络的…

mysql 自定义函数create function

方便后续查询,做以下记录; 自定义函数是一种与存储过程十分相似的过程式数据库对象, 它与存储过程一样,都是由 SQL 语句和过程式语句组成的代码片段,并且可以被应用程序和其他 SQL 语句调用。 自定义函数与存储过程之间…

10.Halcon形态学膨胀,腐蚀,开运算,闭运算

膨胀:对边界点进行扩充,填充空洞,使边界向外部扩张的过程。 腐蚀:消除物体边界点,使边界向内部收缩的过程,把小于结构元素的物体去除掉. 开运算: 先腐蚀后膨胀的过程称为开运算。 作用 : 去除孤立的小点,毛刺,消除小物体,平滑较大物体边界,同时不改变其面积. 闭运…

【Spring】Spring MVC

目 录 一.什么是 Spring MVC?1.MVC 定义2.MVC 和 Spring MVC 的关系 二.为什么要学 Spring MVC?三.怎么学 Spring MVC?1.Spring MVC 创建和连接综上连接方式: 2.获取参数1.传递单个参数2.获取多个参数3.获取对象4.获取表单参数5.接…

Day17_集合与数据结构(链表,栈和队列,Map,Collections工具类,二叉树,哈希表)

文章目录 Day17 集合与数据结构学习目标1 数据结构2 动态数组2.1 动态数组的特点2.2 自定义动态数组2.3 ArrayList与Vector的区别?2.4 ArrayList部分源码分析1、JDK1.6构造器2、JDK1.7构造器3、JDK1.8构造器4、添加与扩容5、删除元素6、get/set元素7、查询元素8、迭…

论文学习 BioNeRF: Biologically Plausible Neural Radiance Fields for View Synthesis

论文学习 BioNeRF: Biologically Plausible Neural Radiance Fields for View Synthesis 前言简介NeRF介绍BioNeRF位置编码提取感知过滤记忆更新纹理推断损失函数 量化验证总结 前言 虽然我不应该再看NeRF相关的东西了,但是我还是觉得这个论文的题目很有意思&#…

ChatGPT 是什么

文章目录 一、ChatGPT 是什么二、ChatGPT的发明者三、ChatGPT的运作方式四、ChatGPT的技术五、ChatGPT的优势六、ChatGPT的局限性七、ChatGPT的应用八、ChatGPT的未来九、总结 一、ChatGPT 是什么 OpenAI的ChatGPT,即Chat Generative Pre-Trained Transformer&…

Sora来袭,蹭一波AI热潮|GPT · 重点梳理 -- 什么是ChatGPT,能干嘛,怎么用?

课程安排 学习内容 第一章 2024年AI领域最新技术 1.OpenAI新模型-GPT-5 2.谷歌新模型-Gemini Ultra 3.Meta新模型-LLama3 4.科大讯飞-星火认知 5.百度-文心一言 6.MoonshotAI-Kimi 7.智谱AI-GLM-4 第二章 OpenAI开发者大会后GPT最新技术 1.最新大模型GPT-4 Turbo详细介绍…