上海品茶

您的当前位置:上海品茶 > 报告分类 > PDF报告下载

华为云实时数据湖查询优化.pdf

编号:121851 PDF 25页 1.81MB 下载积分:VIP专享
下载报告请您先登录!

华为云实时数据湖查询优化.pdf

1、华为云实时数据湖查询优化演讲人:孟涛华为高级工程师2023 华为云数据湖介绍Hudi 查询能力介绍华为云基于hudi的性能优化未来规划华为云数据湖介绍数据湖基础架构DGC流式计算FlinkSQL批处理SparkSQL批处理Spark交互式分析HetuEngine贴源层集市层汇总层postgresqlmysqloracle数据源CDMCDLHudihdfsobs数据入湖:历史存量数据通过CDM一次性搬迁。新增数据通过CDL实时搬迁。数据存储:选用hudi作为数据湖的基座,支持hdfs/对象存储obs,数据加工:流式加工:FlinkSQL 增量拉取hudi表数据。批量加工:Spark、SparkS

2、QL 两种方式。交互式分析:hetu引擎承担数据湖的查询出口。Hudi 查询能力介绍Hudi介绍流式挖掘,增量查询高效的更新,删除能力,可插拔索引事务,MVCC,并发控制,schema evolution,time travel丰富的表级别服务:自动小文件合并,数据布局优化clustering,compacion,clean丰富的生态集成,支持flink/spark写入Presto/hive/spark/flink等 查询Clustering hudi早在0.7版本就已经提供了clustering 优化数据布局,0.10版本随着z-order/hilbert高阶聚类算法的加入,hudi的数据布

3、局优化日趋强大。hudi 当前提供以下三种不同的聚类方式,针对不同的点查场景,要根据具体的过滤条件来选择不同的策略数据布局优化配合 FileSkipping才能更好的发挥效果。当我们完成数据布局后,对每个文件的相关列收集统计信息,下图给个简单的示例,数据经过排序后写入表中生成三个文件,指定点查where a 10 下图可以清楚的看出 a 10 这种就无能为力的。高性能fileList在查询超大规模数据集是,fileList是不可避免的操作;在hdfs上该操作耗时还可以接受,一旦涉及到对象存储大规模的fileList效率极其低下,hudi引入metatable 将文件信息直接保存在下来,从而避免

4、了大规模filelist,华为云基于hudi的性能优化Hudi 索引优化索引是为了加快数据检索速度而创建的一种存储结构,是一种空间换时间的设计思想,作用可以理解为书的目录,通过目录我们可以快速检索到需要的内容。常见的索引类型有:数据索引(如对数据做分区,sort,z-order),二级索引(lucene、bitmap),前缀索引等等,每种所有都有各自的优缺点。引入这些索引可以极大的提升查询引擎的查询能力 数据索引Min-max Lucene 索引 Bitmap 索引 各种索引对比和使用建议基于MDT的Min-max 索引SparkflinkCol_stat_indexFiles&partiti

5、onsMDTData filestimelineobssparkhetuMin-max索引要想效果好,数据入库后需要采用clustering,按照查询条件做排序 异步重组数据。读取时开启mdt利用hfile高效的点查能力,快速加载索引数据完成 数据文件的裁剪查询入库基于MDT的Min-max 索引集成select*from table where id 9luceneLucene 是apache开源的一款搜索工具,具有极其高效的检索效率。solr和es均基于其进行开发。利用lucene强大的倒排索引能力,可以赋予hudi更高效的多维查询,文本检索能力。表某一个列值1,9,4,4,3,1,1,3

6、,8,9分词分词文档文档id西安1,2大唐不夜城1回民街2文档文档id内容内容1西安大唐不夜城2西安回民街正向索引,给每个文档编号,作为其唯一标识倒排索引,对字段内容做分词,按分词和id构建索引分词(列值,分词(列值,string类型会分词)类型会分词)文档文档id(行号)(行号)11,6,792,1043,435,889lucene构建lucene索引要注意的点1)选择 文件级别构建,我们选择行号作为docID,全表级别生成行号不现实,而且表里面数据会持续写入之前行号讲不可以。2)异步构建方式,防止阻塞入库流程。天级别大任务可以选择同步构建Lucene会生成很多文件,这对hdfs namen

7、ode是有压力的关于索引大小Lucene 针对string类型,做分词后产生的索引文件很大,甚至比数据文件都大,18300 行-600M数值类型产生的索引文件相对较小18300-6.6M,可以直接放到内存,加快索引查询索引的创建和使用/create indexcreate index idx_name on mytable using lucene(c1)options(block_size=1024)/索引执行Call run_build(table=mytable,show_involved_partition=true)bitmapBitmap索引,其索引采用bit数组进行存储和计算操作

8、,位置编码的每一位表示键值对应的数据行的有无,查询时直接用索引位图做运算,即可skipping掉大量数据idnameage1zs212ls223ww334zl345ll22age02203400010bitmap1bitmap2bitmap3bitmap4将age所有值存成有序数组,根据过滤条件选取对应bitmap 进行交并运算,返回的结构即为具体某些行包含目标数据,如果返回结果位0 直接可以skipping掉整个文件,否则进行做page级别skipping。bitmap索引的创建和使用/create indexcreate index idx_na

9、me on mytable using lucene(c1)options(block_size=1024)/索引执行Call run_build(table=mytable,show_involved_partition=true)构建lucene索引要注意的点1)选择 文件级别构建,2)异步构建方式,防止阻塞入库流程。3)等值bitmap 占用空间较大,范围查询时非常不友好采用Bit-Slice Range Encoded Bitmap( 入参需要整数,对于string,double,float等类型 可以现在字典 然后再按字典值生成bitmap二级索引构建1)引入新的timeline类型

10、:index (社区已有相应pr,待合入)Index.request-索引计划生成,可按实际用户指定的索引类型生成Index.inflight-索引计划执行Imit-索引数据提交整个索引构建流程按先调度后执行的异步模式执行2)借助index服务,负责索引计划的执行,解放入库程序timeCommit timelineinsertinsertindexinsertT1T2T3T4C2|doneC3-index|request C3-index|inflight C3-index|inflight t C3-index|done Index serverPush index planStart ex

11、ecute Finish and commit二级索引集成Lucene/bitmapcoordinatorwork1work2work3Index readerFile1File2File3split1split2split3skippingskippingscanIndexserver索引类型支持:支持 Lucene/bitmap。Bloomfilter 当前社区是直接放到mdt里面的并且实际文件较大,加载耗时较长。因此直接使用了parquet自身的能力替代索引应用:索引在work端生效,由于lucence/bitmap 索引构建出来的索引文件很大,无法放到coordinator里面直接sk

12、ipping 扫描文件。索引获取:通过与index server交互,获取索引信息的位置,由work端获取相应的索引文件,做裁剪。实际效果:采用我们采用和ck一样的SSB数据集进行测试,数据规模1.5T,120亿条数据。性能提升3x到11x各种索引对比和使用建议索引索引简介简介优点优点缺点缺点sort/z-order(min-max)入库时指定常用的过滤字段排序。查询通过文件的min-max值过滤不需要的文件数据本身即索引,无需额外空间。支持范围查询,等值查询;同时对聚合操作可以减少shuffle开销数据很难保证全局有序,随着数据的写入,表的有序性逐渐消失。排序比较耗资源。Bitmap其索引使

13、用bit数组进行存储。位置编码的每一位标识该行是否存在,查询时直接用位图快速过滤所需数据占用空间较小,创建和使用较快,支持范围查询,等值查询对索引列有基数要求,太高没优势,太低空间效率和性能大幅度下降bloomfilterbloomfilter 可以快速判断一个值是否在目标集合中,利用这个特性,可以很方便的确定文件是否包含目标数据,从而实现过滤等值查询效率较高,实现简单假阳性问题,只支持等值查询,不适合低基数据Lucene利用lucene引擎强大的倒排索引和列式存储能力,实现多维查询,文本检索比较成熟,常见的es和solr都以lucene为基础。支持文本检索,前缀查询,正则匹配海量数据下,存储

14、空间过大,并且索引文件数过多统计信息优化CBO:当前大数据查询引擎可以使用基于成本的优化器(CBO)来改进查询计划,这对于多表关联场景具有很好的效果。收集表和列的统计信息,并保证这些信息的实时性对于cbo至关重要。统计信息优化统计信息优化:1)利用hudi的MDT能力,实时收集统计信息并存入MDT,借助MDT和hudi表的强一致性保障对外提供可靠的,实时性统计信息。2)支持同步/异步方式构建统计信息Hudi tableData FilesMDT(statistic info)Metadata apiData locationqueueOptimizerSchedulerCBODataSourc

15、e apiDataSource apiProcessorProcessorProcessorworkerworkerworkerworkerworkerHudi meta client查询瓶颈分析+索引缓存list filesPrune filesQuery enginedataMDTHudiList candidate filesList index info基于MDT简单的查询流程瓶颈点1:MDT的文件大小随着表大小增长,当表中文件格式上万甚至几十万,单次访问mdt的性能会下降瓶颈点2:list files 和 list index info 两个操作分属于读mdt表不同分区数据;实际环境

16、中大表每次调用mdt接口都要耗时400ms+,两次耗时就接近1s,对于亚秒级查询非常不友好瓶颈点3:MDT的查询每次都是冷启动,导致每次查询都有不必要的开销瓶颈点4:Parquet 元数据信息,读取耗时优化:1)Coordinator/driver 侧缓存mdt索引数据,减少直接访问mdt开销。2)数据入库后利用callback机制,通知缓存侧刷新缓存。查询瓶颈分析+索引缓存Hudi 索引文件Hudi 数据文件(历史入库)Hudi 数据文件新增索引缓存driverexecutorJDBCServer文件裁剪数据读取Spark增量数据入库spark历史数据入库任务刷新索引写入数据写入索引写入数据写入通过缓存,查询数据预热等手段,日增入库几十TB的hudi表,多维查询稳定在1s2s后续工作未来计划 热点数据缓存:缓存热点数据文件。实时物化视图:动态收集用户查询语句,在入库时实时构建物化视图。Mor表读性能优化:引入delete vectors,平衡hudi读写开销。感谢您的观看演讲人:孟涛华为高级工程师

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(华为云实时数据湖查询优化.pdf)为本站 (2200) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部