京东广告低成本存储探索:基于Apache Doris的冷热数据分层方案 | 京东零售技术实践
京东广告依托Apache Doris构建数据存储服务,累积了万亿级数据。随着业务发展数据激增,存储资源成瓶颈,且日常查询中有99%集中在近一年的数据上,呈现冷热特征。本文为大家重点介绍,京东广告团队基于Apache Doris建设的冷热数据分层方案。在数据持续膨胀的背景下,优化资源分配,提升系统整体性能。
京东广告围绕Apache Doris建设广告数据存储服务,为广告主提供实时广告效果报表和多维数据分析服务。历经多年发展,积累了海量的广告数据,目前系统总数据容量接近1PB,数据行数达到18万亿行+,日查询请求量8,000万次+,日最高QPS2700+。随着业务的不断增长与迭代,数据量持续激增,存储资源逐渐成为瓶颈。近两年存储资源经历了多次扩容,存储容量增加了近十倍,而日查询请求量仅增长两倍。同时,计算资源的利用率因频繁扩容而相应降低,导致资源浪费。通过对查询请求的分析,我们发现日常查询中有99%集中在近一年的数据上,数据使用呈现出明显的冷热现象。基于此,希望借助Apache Doris探索一种满足线上服务要求的冷热数据分层解决方案,在数据不断膨胀的情况下,降低数据的存储和使用成本。
截至当前,我们的数据冷热分层实践已历经两种方案,分别是Doris冷数据入湖和Doris冷热数据分层。Doris冷数据入湖方案通过SDC(Spark-Doris-Connector)将Doris中的冷数据转入湖中,入湖后的冷数据可通过Doris外表进行查询。Doris冷热数据分层方案则通过在Doris中设置数据的TTL时间,由Doris根据数据的TTL时间自动判断冷热数据,并将冷数据移至相对廉价的存储介质。冷数据入湖方案借鉴了内外经验,并在Apache Doris 1.2版本中进行了实践;而Doris冷热数据分层方案则是最近上线的新一代冷热数据分层方案。以下将结合我们过往的实践经验,简要介绍这两种方案。
3.1 Apache Doris2.0性能优化&问题修复
3.2 冷数据 Schema Change(SC)优化
3.3 其他问题解决
随着整体数据量持续增长,在引入冷热数据分层方案之前,为缓解线上存储资源紧缺的现状,我们将 Doris 历史数据通过 backup 的方式结转到外部存储,维持 Doris 集群安全的存储水位。完成Doris2.0版本升级后,再将结转的历史数据重新恢复至 Doris 集群。为了便捷高效地操作历史数据,我们实现了一套统一的结转和恢复工具,工具解决了如下三个问题:
更多大数据应用实践
技术为本 让生活更美好