| IFHEHUJਫდՙහഝړຉᚆս۸ ݥय़၇ ᗑฃහկૡᑕ 目录CONTENT 01,FHEHUJ025ܻቘՕᕨ 02$UFWiFचԭ,FHEHUJᚆս۸ 03ս۸පຎᦧ––&+–EHQFKPDUN 04๚ᥢښ | | 01 ,FHEHUJ025 ܻቘՕᕨ Ջԍฎ025 MergeOnRead简称,是一种行级更新技术,本质上是out-of-placeupdate,更新和删除不直接修改历史数据,而是单独记录数据变更,在读取的时候再合并历史数据和变更得到修改后的值。这种方式更新的时候代价较小,读取的时候代价较大 ӣᐿկ (TXDOiW\–GHOHWHই֢֜አ •先把Equality-delete数据读入内存,按照 equality-delete-columns指示的列构建Hash表 •读取data数据,取equality-delete-columns指示的列和Hash进行比对,丢弃掉和Hash表匹配的数据 •先把Position-delete数据读入内存,按照删除的位置构建Bitmap •读取data数据,丢弃掉Bitmap里存在的行号的数据 •Data文件的行号肯定是自然增加,Position-delete文件的行号也是升序排列。 •利用归并排序对两种文件做Sort-Merge。 կᕟᕢ୵ୗ݊WDVNᕮ •Equality-delete只作用于历史文件,当前快照的删除使用Position-delete文件。 •Task按照datafile为主导划分,一个datafile 可以划分为一个或多个Task。 •每一个Task是一个最小读取单元。 | 02 Arctic基于Iceberg性能优化 $UFWiFՕᕨ Arctic是一个开放式架构下的湖仓管理系统,在开放的数据湖格式之上,Arctic提供更多面向流和更新场景的优化,以及一套可插拔的数据自优化机制和管理服务。基于Arctic可以帮助各类数据平台,工具和产品快速搭建开箱即用,流批统一的湖仓。 ԅՋԍᵱᥝ2SWLPL]H 小文件问题 冗余数据太多 数据组织形式低效 过期无效文件残留 自动执行 定时+监听小文件数量触发 AMS调度并异步执行Optimize 资源隔离 AMS提供资源组管理和配额设置,允许资源在表级隔离和共享 灵活部署 基于Flink引擎部署, 支持YARN、K8S,支持通过AMS在线扩缩容 $UFWiF6HOI–RSWiPi]iQJ 6HOI–RSWiPi]iQJੜկݳଚ 降低HDFS的Name-node压力降低Iceberg元数据的数量减少查询时打开文件的代价 6HOI–RSWiPi]iQJၾᴻGHOHWHկ 减少了文件数量 减少了读取的数据量 降低了MOR时应用delete文件的代价,释放了CPU和内存 6HOI–RSWiPi]iQJ(TXDOiW\–GHOHWH3RViWiRQ–GHOHWH Equality-delete:读入内存,然后构建Hash表和data数据进行比对对内存消耗较高,需要额外读取比对字段。构造成本低,直接申明需要删除的数据即可。 Position-delete:可以读入内存构建Bitmap比对,也可以通过 Sort-merge比对,对内存消耗较少,且不需要额外的字段比对。有一定的构造成本。 一个Position-delete只对应一个Datafile,这样可以充分的利用Iceberg的data-skipping,让读取的时候避免读其他无效的position-delete文件 相较于上述的data+delete->data的方案,可以在删除比例不高的时候减少写放大 ᚆᳯ᷌ 可以看出在读取阶段,每个data需要和太多的delete文件对应 6HOI–RSWiPi]iQJපຎ 0i[HGiFHEHUJIRUPDWᔜᕡ۸GDWDկGHOHWHկଫىᔮ 0i[HGiFHEHUJIRUPDW॔አGHOHWHහഝ 读取的时候,相同node下的多个data文件会分配在一个Task里面,读取的时候delete文件只读取一次。 等效于k-waynumberpartitioningproblem 是一个NP-Hard问题 采用排序+贪心算法(CGA)分配,能得到一个很好的次优解 DHOHWHկ॔አ݊7DVNړᯈᒽኼපຎ ӞԶᚆߥय़ጱ݇හ 文件类型 文件类型对查询性能影响较大,Parquet文件相较于AVRO由于采用列存模式具有较高的压缩比,写入和读取的IO会更少,并且可以列裁剪,谓词过滤,读取性能很高,有时能达到数倍差距,但是Parquet对内存消耗更高,有时甚至因为同时写入的Parquet文件过多导致OOM等问题 压缩类型 各种压缩类型的特性都有区别,有的压缩比更高但是解压缩代价就更高,有的压缩比不高但是解 压缩代价更低,需要根据机器,业务情况选择合适的 | 03 优化效果如何评估 TPC-C用于OLTP负载,使用只读和更新密集型业务事务的混合来评估性能 TPC-H是一个决策支持基准测试,它对检查大量数据、执行高度复杂的查询并回答关键业务问题的决策支持系统进行建模 CH-benchmark以未经修改的TPC-C的模式与事务为基础,结合经过调整的TPC-H查询,形成了一个复杂的混合工作负载 详细说明:https://arctic.netease.com/ch/benchmark/benchmark-step/Benchmark工具:https://github.com/NetEase/lakehouse-benchmarkFlinkCDC:https://github.com/NetEase/lakehouse-benchmark-ingestion ๚ᥢښ •异步数据全局排序(普通排序,Z-order) •异步二级索引构建 THANKS |