AI智能总结
“ 长期专注在OLAP领域有OLAP生态、应用及内核的研发经验目前参与Gluten项目的设计研发工作有多项OLAP相关专利 刘文政高级软件架构师 •Gluten背景及现状•Gluten技术原理•Gluten实践与踩坑经验 Gluten背景和现状 •兼容Spark•NativeExecutionEngine•至少2倍性能提升 •商业化产品、非开源 从Databricks在sigmod论文中依旧能了解其设计思想 https://people.eecs.berkeley.edu/matei/papers/2022/sigmod_photon.pdf ClickhouseBackend VeloxBackend •10+Companies参与,包括Intel,Kyligence,BIGO,Meituan,Aliyun,Neteaseetc.•80+Contributors•计划贡献到Apache基金会 •总体2.12倍的速度提升•最高3.48倍的速度提升•Q21部分算子未支持,不参与比较 Gluten技术原理 •Gluten仅是一个SparkPlugin•SparkPlan->NativeEnginePlan•统一内存管理•列式Shuffle•Shim层兼容不同版本Spark•Fallback机制允许原生Spark执行•NativeExecution统计信息上报 Spark Plan Gluten Plan SubstriatPlan Native Engine Plan •集成SparkOff-heapMemoryManagement•MemoryPool机制减少malloc次数•内存申请上报TaskMemoryManager•Executor内存不足时触发Spill •Hash-based Shuffle •Native Partitioner •Reducer零拷贝 •对小数据量Shuffle的优化 •对小文件数量的优化 HDD集群适用Remove Shuffle Service方案 •NativeEngine不支持的算子函数将会回退到Spark中计算•NativeEngine的列式数据将会转化成SparkUnsafeRow,参与Spark计算•Spark计算完成后会数据重新转化成NativeEngineColumnarBatch•相邻的fallback算子会进行合并 Gluten实践与踩坑经验 •底层查询引擎为Spark•数据格式包含CSV/Parquet等•数据存储在S3•查询对象既有物化视图表,也有原始表•应用部署在AWS上 •实验室有效果,怎么保证生产上也有效果?•数据准确性怎么保证?•替换后,到底性能有多大提升?•生产环境没有访问权限,怎么排查问题? •部署架构,数据对比、性能对比先在QA环境充分演练 •白天复制保存流量,夜间回放,不影响生产使用•自动化性能对比、数据对比,错误摘要等每天日报总结。研发无法登陆生产环境。 •SQLHint部分失效•Decimal精度问题•Crossjoin内存占用过多•CSV文件解析规则未对其•Fallback算子导致查询更慢 问题解决后,性能达标,总体2倍的提升,准备上线! •On-Heap内存使用正常•Off-Heap存在内存泄漏•持续运行3天后,查询开始失败 •Native Engine MemoryProfile•查看malloc主要分布•Caller method定位 最后定位原因居然是NativeEngine中Substrait使用后未及时释放。。。 •TPCH/TPCDS验证远远不够•建议从一些非核心关键场景开始•替换前做充分的性能和准确性验证•需要具备一定的定位和解决问题的能力•积极参与社区的沟通 微 信 官 方 公 众 号 : 壹 佰 案 例关 注 查 看 更 多 年 度 实 践 案 例