主要观点总结
本文介绍了B站在湖仓一体平台下,对Iceberg表进行的优化及智能推荐功能的设计与实践。文章涵盖了平台背景、Iceberg表的特点、数据优化、表管理、智能推荐等方面,并展望了未来的发展方向和可能遇到的问题。
关键观点总结
关键观点1: 背景介绍
随着B站数据规模的增长,为应对BI报表、指标服务、A/B Test等场景的需求,B站采用了湖仓一体平台,并使用Iceberg作为数据表的格式。Iceberg具有多项优势,如支持更灵活安全的表结构变更、事务和数据多版本记录等。
关键观点2: 表管理
Magnus服务是B站自研的Iceberg表智能数据优化服务,其中表管理是基本功能,负责调度Iceberg表的维护操作,如ExpireSnapshots、DeleteOrphanFiles和RewriteManifests等,以提升元数据的查询性能和降低存储压力。
关键观点3: 数据优化
数据优化是Magnus服务的核心功能,基于Iceberg实现的多项查询加速技术,通过异步数据优化提升Iceberg表的查询性能。优化任务包括小文件合并、排序、分布、创建索引文件、创建预计算文件等。
关键观点4: 智能推荐
智能推荐是Magnus服务的重要功能,根据用户的查询历史,自动为Iceberg表配置合理的优化手段,降低使用门槛。采集的查询信息包括基本信息、性能关键指标、查询模式和数据过滤指标等,通过规则生成推荐策略。
关键观点5: 未来展望
未来,B站将进一步提高数据优化调度的承载能力和稳定性,应对日渐增长的优化任务。同时,将迭代优化智能推荐策略,提高推荐准确率,尤其是针对复杂查询模式的Iceberg表的推荐。
文章预览
01 背景 B站湖仓一体平台数据规模约60PB,主要服务于BI报表、指标服务、A/B Test、人群圈选、日志等场景,日查询量超过400万,查询P99响应时间约为3s。平台架构如图所示: 湖仓一体平台架构图 平台使用Iceberg作为数据表的格式。Iceberg有独立开放的元数据管理体系,在Spark、Flink、Trino等主流计算引擎有完备的社区支持,且与Hive表相比具有以下优势: 支持更灵活、更安全的表结构变更 支持事务和数据多版本 记录文级别的metrics,查询时具备更高效的文件过滤能力 Iceberg表结构示意图 在Iceberg的基础上我们拓展和支持了多项查询加速能力,以满足用户多样化的分析需求: 分布(Distribution):支持Z-order和Hilbert Curve等多维分布 索引(Index):文件级别跳数索引,包括BloomFilter、Bitmap、BloomRangeFilter等通用索引,以及TokenBloomFilter、TokenBitmap、NgramBloomFilter、Ngram
………………………………