《8-1 Presto on Alluxio 在翼支付 BI 平台的应用实践.pdf》由会员分享,可在线阅读,更多相关《8-1 Presto on Alluxio 在翼支付 BI 平台的应用实践.pdf(17页珍藏版)》请在三个皮匠报告上搜索。
1、闻一波翼支付大数据研发工程师|Presto on Alluxio 在翼支付Bi平台的应用实践01Presto+Alluxio应用场景02翼支付Bi平台实践03未来规划目录CONTENT|01Presto+Alluxio应用场景|Presto+Alluxio应用场景|加速Bi平台数据查询加速人工智能场景下模型的训练速度统一的数据访问入口Presto+Alluxio 基本架构02翼支付Bi平台实践|业务场景现状|各引擎查询量分布Presto引擎目前承载Bi平台超过90%的查询请求Presto集群查询耗时分布Presto集群用户查询90%的sql可以在1min中以内,但是P99分位有259s,还有很
2、大优化空间问题与解决方案问题一:Presto on Alluxio Cluster VS Presto on Alluxio Local Cache 选型|两种部署方式Presto on Alluxio ClusterPresto Alluxio Local Cache优点1.Presto和Alluxio集群采用同集群部署,实现”Local Cache hit”2.可以预先加载缓存,完成缓存的冷启动1.无需额外部署Alluxio集群,比较轻量缺点1.需要单独准备一套Alluxio集群,增加了机器和运维成本;2.Hdfs实际存储发生变更时,还要实时同步,增加了不确定性1.Presto 集群在动态
3、扩缩容情况下无法命中缓存2.缓存需要由presto侧主动发起,浪费一定Presto资源问题与解决方案|整体架构设计:实际引入alluxio local cache以及CacheManager后的整体架构软亲和度调度策略consistent hashing缓存清除策略问题与解决方案|问题二:如何不修改hive元数据Url schema,让Presto同时支持查询Alluxio local cache和Hdfs读取数据url格式转变url解决方案问题与解决方案|问题三:如何保证外部存储变更时,及时确保缓存有效缓存及时失效设计问题与解决方案|问题四:如何在有限空间内多缓存高频查询以及IO密集的热表如
4、何判定缓存频繁查询以及IO密集型的热表,我们开发了一个新的服务cache manager,通过对presto近一段时间内查询的query执行统计信息,进行统计分析,粒度精确到每一个sql中涉及表/分区的IO大小和读取耗时,因此我们设计的缓存在presto中精确到分区级别,即可以控制分区级的数据是否进行缓存。Presto Query Info Json统计信息问题与解决方案|问题四引申:CacheManager服务设计热力值计算背包问题HiveDDL 监控问题与解决方案|问题五:如何设计Presto 与CacheManager服务交互解耦,降低Presto对CacheManager的依赖Pres
5、to、CacheManager交互过程实现效果|TPCTPC-DSDS测试数据集测试数据集生产实测部分数据生产实测部分数据经过测试对比发现,使用presto alluxio local cache方式提升sql执行效率达到23%左右生产测试受到CacheManager服务分析缓存命中影响,会出现“反弹现象”03未来规划|未来规划|1.对于热点缓存的分析方式目前仅通过人为自定义的公式去计算出分区的热力值,主观性太强,未来希望借助AI智能学习的方式去预测出查询概率作为热力值(OnGoing);2.目前整个方案设计比较轻量解耦,也避开了一些成本较高的操作,比如没有实现当worker重启之后能够主动恢复alluxio client中的存储元数据信息,而不是简单的删除本地数据;3.Coordinator在整个缓存流程中起着承上启下的作用,既要接收来自CacheManager的缓存标签信息,还要通知worker去删除失效缓存,但是目前还存在单点故障问题,未来需要解决该问题;4.目前我们使用的解决方案仅针对Presto引擎,不具有通用性,未来还会考虑Alluxio Cluster模式,设计出Alluxio Cluster模式下的解决方案,给其他查询引擎提供加速服务;非常感谢您的观看|