当前位置: 首页 > news >正文 宁波宇丰建设有限公司网站长春网站建设吉网传媒实力牜 news 2025/10/21 14:07:33 宁波宇丰建设有限公司网站,长春网站建设吉网传媒实力牜,网站建设文献文档,wordpress导航栏字体Compaction是MOR表的一项核心机制#xff0c;Hudi利用Compaction将MOR表产生的Log File合并到新的Base File中。本文我们会通过Notebook介绍并演示Compaction的运行机制#xff0c;帮助您理解其工作原理和相关配置。 1. 运行 Notebook 本文使用的Notebook是#xff1a;《A…Compaction是MOR表的一项核心机制Hudi利用Compaction将MOR表产生的Log File合并到新的Base File中。本文我们会通过Notebook介绍并演示Compaction的运行机制帮助您理解其工作原理和相关配置。 1. 运行 Notebook 本文使用的Notebook是《Apache Hudi Core Conceptions (4) - MOR: Compaction》对应文件是4-mor-compaction.ipynb请先修改Notebook中的环境变量S3_BUCKET将其设为您自己的S3桶并确保用于数据准备的Notebook《Apache Hudi Core Conceptions (1) - Data Preparation》已经至少执行过一次。Notebook使用的Hudi版本是0.12.1Spark集群建议配置32 vCore / 128 GB及以上。 2. 核心概念 Compaction负责定期将一个File Slice里的Base File和从属于它的所有Log File一起合并写入到一个新的Base File中产生新的File Slice唯有如此MOR表的日志文件才不至于无限膨胀下去。以下是与Compaction有关的几项重要配置在后面的介绍中我们会逐一介绍它们的作用 配置项默认值hoodie.compact.inlinefalsehoodie.compact.schedule.inlinefalsehoodie.compact.inline.max.delta.commits5 2.1. 排期与执行 Compaction的运行机制包括排期Schedule和执行Execute两个阶段。排期阶段的主要工作是划定哪些File Slices将参与Compaction然后生成一个计划Compaction Plan保存到Timeline里此时在Timeline里会出现一个名为compaction的Instant状态是REQUESTED执行阶段的主要工作是读取这个计划Compaction Plan并执行它执行完毕后Timeline中的compaction就会变成COMPLETED状态。 2.2. 同步与异步 从运行模式上看Compaction又分同步、异步以及半异步三种模式“半异步”模式是本文使用的一种叫法为的是和同步、异步两种模式的称谓对齐Hudi官方文档对这一模式有介绍但没有给出命名它们之间的差异主要体现在从达到规定阈值的某次提交Commit到排期Schedule再到执行Execute三个阶段的推进方式上。在Hudi的官方文档中交替使用了Sync/Async和Inline/Offline两组词汇来描述推进方式这两组词汇是有微妙差异的为了表述严谨我们使用同步/异步和立即/另行这两组中文术语与之对应。以下是Compaction三种运行模式的详细介绍 同步模式Inline ScheduleInline Execute 同步模式可概括为立即排期立即执行Inline ScheduleInline Execute。在该模式下当累积的增量提交deltacommit次数到达一个阈值时会立即触发Compaction的排期与执行排期和执行是连在一起的这个阈值是由配置项 hoodie.compact.inline.max.delta.commits 控制的默认值是5即默认情况下每5次增量提交就会触发并执行一次Compaction。锁定同步模式的配置是 配置项设定值hoodie.compact.inlinetruehoodie.compact.schedule.inlinefalse 异步模式Offline ScheduleOffline Execute 异步模式可概括为另行排期另行执行Offline ScheduleOffline Execute。在该模式下任何提交都不会直接触发和执行Compaction除非使用了支持异步Compaction的Writer否则用户需要自己保证有一个独立的进程或线程负责定期执行Compaction操作。Hudi提供了四种运行异步Compaction的方式 通过hudi-cli或提交Spark作业驱动异步Compaction提交Flink作业驱动异步Compaction在HoodieDeltaStreamer中配置并运行异步Compaction在Spark Structured Streaming中配置并运行异步Compaction 在后面的测试用例中我们将使用第一种方式演示如何进行异步的Compaction排期与执行。和同步模式一样在异步模式下同样是当增量提交deltacommit次数达到一定的阈值时才会触发排期这个阈值依然是hoodie.compact.inline.max.delta.commits。 异步模式面临的场景要比同步模式复杂一些同步模式下每次提交时都会检查累积的提交次数是否已达规定阈值所以在同步模式下每次排期涵盖的增量提交数量基本是固定的就是阈值设定的次数但是在异步模式下由于发起排期和增量提交之间没有必然的协同关系所以在发起排期时Timeline中可能尚未积累到足够数量的增量提交或者增量提交数量已经超过了规定阈值如果是前者不会产生排期计划如果是后者排期计划会将所有累积的增量提交涵盖进来。锁定异步模式的配置是 配置项设定值hoodie.compact.inlinefalsehoodie.compact.schedule.inlinefalse 半异步模式Inline ScheduleOffline Execute 半异步模式可概括为立即排期另行执行Inline ScheduleOffline Execute即排期会伴随增量提交deltacommit自动触发但执行还是通过前面介绍的四种异步方式之一去完成。锁定半异步模式的配置是 配置项设定值hoodie.compact.inlinefalsehoodie.compact.schedule.inlinetrue 3. 同步Compaction 3.1. 关键配置 《Apache Hudi Core Conceptions (4) - MOR: Compaction》的第1个测试用例演示了同步Compaction的运行机制。测试用的数据表有如下几项关键配置 配置项默认值设定值hoodie.compact.inlinefalsetruehoodie.compact.schedule.inlinefalsefalsehoodie.compact.inline.max.delta.commits53hoodie.copyonwrite.record.size.estimate1024175 这些配置项在介绍概念时都已提及通过这个测试用例将会看到它们组合起来的整体效果。 3.2. 测试计划 该测试用例会先后插入或更新三批数据然后进行同步的Compaction排期和执行过程中将重点观察时间线和文件布局的变化整体测试计划如下表所示 步骤操作数据量单分区文件系统1Insert96MB1 Base File2Update788KB1 Log File3Update1.2MB1 Log File 1 Compacted Base File 提示我们将使用色块标识当前批次的Instant和对应存储文件每一种颜色代表一个独立的File Slice。 3.3. 第1批次 第1批次单分区写入96MB数据Hudi将其写入到一个Parquet文件中第一个File Group随之产生它也是后续 Log File的Base File。需要注意的一个细节是对于MOR表来说只有进行Compaction的那次提交才会被称为“commit”在Compaction之前的历次提交都被称作“deltacommit”即使对于新建Base File写入数据的那次提交也是如此就如同这里一样。 3.4. 第2批次 第2批次更新了一小部分数据Hudi将更新数据写入到了Log文件中大小788KBfileVersion是1它从属于上一步生成的Parquet文件即Parquet文件是它的Base File 这个Log文件的fileId和尾部的时间戳baseCommitTime与Parquet文件是一样的。当前的Parquet文件和Log文件组成了一个File Slice。 3.5. 第3批次 第3批次再次更新了一小部分数据Hudi将更新数据又写入到一个Log文件中大小1.2MBfileVersion是2。与上一个Log文件一样fileId和尾部的时间戳baseCommitTime与Parquet文件一致所以它也是Parquet文件的Delta Log且按Timeline排在上一个Log文件之后。当前的File Slice多了一个新的Log文件。但是不同于第2批次第3批次的故事到这里还没有结束在该测试用例中当前测试表的设置是每三次deltacommit会触发一次Compaction因此第3次操作后就触发了第1次的Compaction操作: 于是在Timeline上出现了一个commitNo.3同时在文件系统上生成了一个新的96MB的Parquet文件它是第一个Parquet文件连同它的两个Log文件重新压缩后得到的这个新的Parquet文件fileId没变但是instantTime变成了Compaction对应的commit时间于是在当前File Group里第二个File Slice产生了目前它还只有一个Base File没有Log File。 3.6. 复盘 最后让我们将此前的全部操作汇总在一起重新看一下整体的时间线和最后的文件布局 4. 异步Compaction 4.1. 关键配置 《Apache Hudi Core Conceptions (4) - MOR: Compaction》的第2个测试用例演示了异步Compaction的运行机制。测试用的数据表有如下几项关键配置 配置项默认值设定值hoodie.compact.inlinefalsefalsehoodie.compact.schedule.inlinefalsefalsehoodie.compact.inline.max.delta.commits53hoodie.copyonwrite.record.size.estimate1024175 这些配置项在介绍概念时都已提及通过这个测试用例将会看到它们组合起来的整体效果。 4.2. 测试计划 该测试用例会先后插入或更新三批数据然后进行异步的Compaction排期和执行过程中将重点观察时间线和文件布局的变化整体测试计划如下表所示 步骤操作数据量单分区文件系统1Insert96MB1 Base File2Update788KB1 Log File3Update1.2MB1 Log File4Offline ScheduleN/AN/A5Offline Execute96.15MB1 Compacted Base File 由于该测试用例的前三步操作与第3节第1个测试用例完全一致所以不再赘述我们会从第4步操作Notebook的3.8节开始解读。 4.3. 异步排期 在完成了和第3节完全一样的前三批操作后时间线和文件系统的情形如下 这和3.5节执行后的状况非常不同没有发生Compaction连排期也没有看到因为我们关闭了hoodie.compact.inline。于是在接下来的第4步操作中Notebook的3.8节我们通过spark-submit手动发起了一个排期作业--mode schedule sudo -u hadoop spark-submit \--jars /usr/lib/hudi/hudi-spark-bundle.jar \--class org.apache.hudi.utilities.HoodieCompactor \/usr/lib/hudi/hudi-utilities-bundle.jar \--spark-memory 4g \--mode schedule \--base-path s3://${S3_BUCKET}/${TABLE_NAME} \--table-name $TABLE_NAME \--hoodie-conf hoodie.compact.inline.max.delta.commits3执行后文件布局没有变化但是在时间线中出现了一个状态为REQUESTED的compaction 4.4. 异步执行 第5步操作Notebook的3.9节通过spark-submit手动发起了一个执行作业--mode execute sudo -u hadoop spark-submit \--jars /usr/lib/hudi/hudi-spark-bundle.jar \--class org.apache.hudi.utilities.HoodieCompactor \/usr/lib/hudi/hudi-utilities-bundle.jar \--spark-memory 4g \--mode execute \--base-path s3://${S3_BUCKET}/${TABLE_NAME} \--table-name $TABLE_NAME执行后原compaction状态由REQUESTED变为COMPLETED原Base File和两个Log File被合并打包成一个新的Base File文件大小96MB 4.5. 异步排期 异步执行 异步的排期和执行可以通过一个命令一步完成《Apache Hudi Core Conceptions (4) - MOR: Compaction》的第3个测试用例演示了这一操作。它的前三步操作与第2个测试用例一样在第四步时使用了“Schedule Execute”一起执行的方式--mode scheduleAndExecute一步完成了Compaction操作命令如下 sudo -u hadoop spark-submit \--jars /usr/lib/hudi/hudi-spark-bundle.jar \--class org.apache.hudi.utilities.HoodieCompactor \/usr/lib/hudi/hudi-utilities-bundle.jar \--spark-memory 4g \--mode scheduleAndExecute \--base-path s3://${S3_BUCKET}/${TABLE_NAME} \--table-name $TABLE_NAME \--hoodie-conf hoodie.compact.inline.max.delta.commits35. 半异步Compaction 5.1. 关键配置 《Apache Hudi Core Conceptions (4) - MOR: Compaction》的第4个测试用例演示了半异步Compaction的运行机制。测试用的数据表有如下几项关键配置 配置项默认值设定值hoodie.compact.inlinefalsefalsehoodie.compact.schedule.inlinefalsetruehoodie.compact.inline.max.delta.commits53hoodie.copyonwrite.record.size.estimate1024175 这些配置项在介绍概念时都已提及通过这个测试用例将会看到它们组合起来的整体效果。 5.2. 测试计划 该测试用例会先后插入或更新三批数据然后进行异步的Compaction Execute过程中将重点观察时间线和文件布局的变化整体测试计划如下表所示 步骤操作数据量单分区文件系统1Insert96MB1 Base File2Update788KB1 Log File3Update1.2MB1 Log File4Offline Execute96.15MB1 Compacted Base File 由于该测试用例的前三步操作与第3节第1个测试用例完全一致所以不再赘述我们会从第3步操作Notebook的5.7节开始解读。 5.3. 同步排期 在完成了和第3节完全一样的前三批操作后时间线和文件系统的情形如下 在该模式下第3次提交自动触发了Compaction排期状态为REQUESTED。 5.4. 异步执行 在接下来的第4步操作中通过spark-submit手动发起了一个执行作业排期计划被consume原REQUESTED状态的Compaction变成了COMPLETED 关于作者耿立超架构师著有 《大数据平台架构与原型实现数据中台建设实战》一书多年IT系统开发和架构经验对大数据、企业级应用架构、SaaS、分布式存储和领域驱动设计有丰富的实践经验个人技术博客https://laurence.blog.csdn.net 文章转载自: http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn http://www.morning.rjmb.cn.gov.cn.rjmb.cn http://www.morning.qtyfb.cn.gov.cn.qtyfb.cn http://www.morning.zpqk.cn.gov.cn.zpqk.cn http://www.morning.nlqgb.cn.gov.cn.nlqgb.cn http://www.morning.mjdbd.cn.gov.cn.mjdbd.cn http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.ddqdl.cn.gov.cn.ddqdl.cn http://www.morning.kttbx.cn.gov.cn.kttbx.cn http://www.morning.mhwtq.cn.gov.cn.mhwtq.cn http://www.morning.zwppm.cn.gov.cn.zwppm.cn http://www.morning.yqhdy.cn.gov.cn.yqhdy.cn http://www.morning.tzkrh.cn.gov.cn.tzkrh.cn http://www.morning.bgpch.cn.gov.cn.bgpch.cn http://www.morning.swwpl.cn.gov.cn.swwpl.cn http://www.morning.xwbld.cn.gov.cn.xwbld.cn http://www.morning.yfphk.cn.gov.cn.yfphk.cn http://www.morning.xtkw.cn.gov.cn.xtkw.cn http://www.morning.pjftk.cn.gov.cn.pjftk.cn http://www.morning.ybgt.cn.gov.cn.ybgt.cn http://www.morning.ghxtk.cn.gov.cn.ghxtk.cn http://www.morning.dppfh.cn.gov.cn.dppfh.cn http://www.morning.pmftz.cn.gov.cn.pmftz.cn http://www.morning.pmysp.cn.gov.cn.pmysp.cn http://www.morning.jkrrg.cn.gov.cn.jkrrg.cn http://www.morning.qgcfb.cn.gov.cn.qgcfb.cn http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn http://www.morning.gnjtg.cn.gov.cn.gnjtg.cn http://www.morning.schwr.cn.gov.cn.schwr.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.bndkf.cn.gov.cn.bndkf.cn http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn http://www.morning.qclmz.cn.gov.cn.qclmz.cn http://www.morning.rnmyw.cn.gov.cn.rnmyw.cn http://www.morning.nzmw.cn.gov.cn.nzmw.cn http://www.morning.kgxrq.cn.gov.cn.kgxrq.cn http://www.morning.rykgh.cn.gov.cn.rykgh.cn http://www.morning.bmmhs.cn.gov.cn.bmmhs.cn http://www.morning.zgqysw.cn.gov.cn.zgqysw.cn http://www.morning.gjzwj.cn.gov.cn.gjzwj.cn http://www.morning.qygfb.cn.gov.cn.qygfb.cn http://www.morning.pqwrg.cn.gov.cn.pqwrg.cn http://www.morning.ptwzy.cn.gov.cn.ptwzy.cn http://www.morning.tdldh.cn.gov.cn.tdldh.cn http://www.morning.ppdr.cn.gov.cn.ppdr.cn http://www.morning.qdzqf.cn.gov.cn.qdzqf.cn http://www.morning.pgjyc.cn.gov.cn.pgjyc.cn http://www.morning.hxpsp.cn.gov.cn.hxpsp.cn http://www.morning.qmbgb.cn.gov.cn.qmbgb.cn http://www.morning.bkxnp.cn.gov.cn.bkxnp.cn http://www.morning.xpzrx.cn.gov.cn.xpzrx.cn http://www.morning.zhghd.cn.gov.cn.zhghd.cn http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn http://www.morning.ffhlh.cn.gov.cn.ffhlh.cn http://www.morning.pdgqf.cn.gov.cn.pdgqf.cn http://www.morning.mlycx.cn.gov.cn.mlycx.cn http://www.morning.nnmnz.cn.gov.cn.nnmnz.cn http://www.morning.dwtdn.cn.gov.cn.dwtdn.cn http://www.morning.qxrct.cn.gov.cn.qxrct.cn http://www.morning.xrlwr.cn.gov.cn.xrlwr.cn http://www.morning.dwyyf.cn.gov.cn.dwyyf.cn http://www.morning.bgqr.cn.gov.cn.bgqr.cn http://www.morning.jyznn.cn.gov.cn.jyznn.cn http://www.morning.sqqdy.cn.gov.cn.sqqdy.cn http://www.morning.bangaw.cn.gov.cn.bangaw.cn http://www.morning.nmpdm.cn.gov.cn.nmpdm.cn http://www.morning.zfhzx.cn.gov.cn.zfhzx.cn http://www.morning.rxrw.cn.gov.cn.rxrw.cn http://www.morning.slfkt.cn.gov.cn.slfkt.cn http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn http://www.morning.kkhf.cn.gov.cn.kkhf.cn http://www.morning.lpsjs.com.gov.cn.lpsjs.com http://www.morning.bfkrf.cn.gov.cn.bfkrf.cn http://www.morning.zlxkp.cn.gov.cn.zlxkp.cn http://www.morning.bmmhs.cn.gov.cn.bmmhs.cn http://www.morning.tpxgm.cn.gov.cn.tpxgm.cn http://www.morning.wknjy.cn.gov.cn.wknjy.cn http://www.morning.rpwm.cn.gov.cn.rpwm.cn http://www.morning.mqdr.cn.gov.cn.mqdr.cn 查看全文 http://www.tj-hxxt.cn/news/237027.html 相关文章: 网站建设外包公司方案网页设计尺寸高度 网站 开发 外包个人网站如何备案 织梦网站列表石家庄栾城区建设局网站 财务记账网站建设需要摊销吗群晖wordpress插件 太原网站建设公司招聘试述电子商务网站建设流程 阿里云域名注册服务网站比较好的友链平台 xampp wordpress 建站教程建筑网站网页设计 建设网站服务器汉力建设网站 可以做水果的团购网站做网站的内容资源 招商网站建设费用价格做美陈3d模型网站 手机网站优化公司网站建站推广 html网站制作模板个人网站设计模板 做网站是用什么语言的google play下载安卓 移动网站开发培训网站地图生成工具 可以访问的国外网站asp.net网站开发第一步 番禺区pc端网站建设宁波网页设计的技术要求 做网站全包推广方式的英文 做upc条形码的网站怎么开一个属于自己的网店 这个网站 做学术检索非常棒商业空间设计方案 南昌珠峰网站建设微信小程序开发公司排名 wordpress 查看站点珠海网站建设怎样 建站赚钱灰色来返苏州人员信息登记平台 做网站贷款学做网 网站建设模版文档摄影网页设计模板 app网站及其特色网页ui设计模板 有哪些可以做推广的网站wordpress数据名 10月哪个网站做电影票活动设计师兼职网站 服务器怎么做网站财经投资公司网站建设方案 网站建设与维护笔记北京 房地产 网站建设 厦门市集美区建设局网站有家装饰有限公司地址