当前位置:首页 > 报告详情

Doris Bitmap 精确去重优化实践.pdf

上传人: 2*** 编号:135179 2023-07-09 35页 5.67MB

1、DataFunSummit#2023Doris Bitmap精确去重优化实践魏翔-美团-OLAP引擎开发工程师01精确去重简介02Bitmap 聚合性能优化03结合Doris向量化引擎优化04优化效果与总结目录 CONTENTDataFunSummit#202301精确去重简介DataFunSummit#202301精确去重简介去重计算场景与业界解决方案MPP架构两阶段聚合Roaring Bitmap 简介去重场景 去重指标计算 PV,UV的计算 日活用户数 订单量 客户留存(率)去重指标 相较于 普通指标(sum,avg)计算上的复杂度较高因此比较容易成为指标计算的性能瓶颈SELECT dt

2、 AS dt,first_entrance AS first_entrance_code,COUNT(DISTINCT device_id)AS view_uv,FROM TBLA where dt=20230501 and type=view GROUP BY dt,first_entrance业界已有的解决方案1.数仓生产:将各种指标在数仓生产环节提前计算好2.模糊去重:HyperLogLog3.精确去重:导入预聚合,减少现场计算量数仓生产 指标计算层级完全依赖数仓生产指标维度组合指数增长新增指标周期长数仓加工逻辑臃肿模糊去重 HyperLogLog原理 内存桶和哈希函数:将输入数据哈希到

3、多个内存桶中 寻找最长前缀零位(Leading Zero Count,LZC):对每个哈希值计算 LZC 估计基数:通过统计 LZC 的平均值来估计基数 分桶减少误差StdError 1.04m(m=bucketnum)精确去重简介 精确的必要性 重要指标无法近似:金钱相关 数据驱动决策:近似误差会带来误判 灵活维度分析:不同维度下钻分析 MPP架构下精确去重过程:两阶段聚合-Streaming Agg -Merge Agg 数据结构 -明细模型:HashSet -聚合模型:Bitmap(基于Roaring Bitmap实现)去重指标计算去重指标计算优势缺点数仓生产查询时延很低非常不灵活开发周

4、期长模糊去重(HyperLogLog)查询时延适中支持上卷,灵活维度分析存在误差现场计算明细模型:HashSet支持灵活维度分析高基数场景查询时延很高现场计算聚合模型:Bitmap查询时延较高支持上卷,灵活维度分析高基数场景 Bitmap本身比较大计算吞吐和数据分布强相关Roaring Bitmap简介 Roaring Bitmap 数据结构Bitmap 是一种基于位图思想的用于保存聚合后的明细数据(64位非负整数)的数据结构保存明细数据使得其能够支持rollup构建以及任意维度的上卷分析Roaring Bitmap简介 Container TypeContainer Type数据结构大小Ar

5、ray Containerunsigned short 数组size*16 bitBitset Containerbitset65536 bitRunLen ContainerRun length 编码当size 4096 时:bitset container 更省空间Roaring Bitmap简介 Add Value into Bitmap精确去重简介 Union 时间复杂度union container类型时间复杂度array union arrayO(m+n)array union bitsetO(m)bitset union bitsetO(1)runlen union runlen

6、接近 O(1)精确去重简介-小结 关于精确去重指标1.精确去重指标计算的复杂度高2.精确去重场景中Bitmap 兼顾灵活分析和性能 关于Roaring Bitmap1.面向空间优化的2.尽量将计算卸载到 Bitset Container Union 常数时间开销上3.数据不宜太离散,低位连续,减少Container数量膨胀DataFunSummit#202302Bitmap聚合性能优化DataFunSummit#202302Bitmap聚合性能优化现有性能瓶颈基于输入数据布局的优化基于计算流程的优化Doris Bitmap 聚合现有瓶颈基于输入数据布局的

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文介绍了美团OLAP引擎开发工程师魏翔在DataFunSummit 2023上的演讲内容,主要围绕Doris Bitmap的精确去重优化实践展开。 关键点如下: 1. 精确去重简介:去重计算在指标计算中复杂度较高,业界解决方案有数仓生产、模糊去重和精确去重。数仓生产依赖数仓生产指标,查询时延低但灵活性差;模糊去重使用HyperLogLog,查询时延适中但存在误差;精确去重采用预聚合和Bitmap,支持灵活维度分析且查询时延较高。 2. Bitmap聚合性能优化:Bitmap聚合在处理高基数场景时存在性能瓶颈,如多次container union操作和元素上涨导致的额外内存分配。优化方法包括基于输入数据布局的优化(如字典编码、正交编码)和基于计算流程的优化(如直接使用bitset、bitmap序列化shuffle时检查是否需要降级array)。 3. 结合Doris向量化引擎:Doris向量化引擎可以优化Bitmap内存使用、Fast Union和聚合下推。如使用Jemalloc替换Tcmalloc降低Bitmap列拷贝开销,Fast Union减少数据移动,聚合下推充分利用scanner线程并发。 4. 优化效果与总结:基于输入数据分布的优化和计算流程的优化在不同基数场景下有显著提升,如十亿级基数提升5倍、亿级基数提升10倍;结合Doris引擎相关优化如Bitmap COW、Fast Union和聚合下推,可减少端到端时延20%~50%。 综上,魏翔介绍了Doris Bitmap精确去重优化的实践方法和技术细节,并通过数据展示了优化效果。
"Doris如何实现Bitmap精确去重?" "如何通过Roaring Bitmap优化数据聚合性能?" "Doris向量化引擎如何提升Bitmap内存使用效率?"
客服
商务合作
小程序
服务号
折叠