ByConity 在抖音集团内行为分析 EB 级场景的最佳实践

原创
06/27 15:20
阅读数 4.8K

ByConity 是字节跳动基于 ClickHouse 发展出的存算分离的云原生数仓引擎,2023年1月正式发布开源 Beta 版本,今年7月,ByConity 正式发布1.0版本。

开源一周年之际,ByConity 已经获得了2100+的 Star 数,issue 数480+,用户60+,贡献者80+。2024年5月25日,ByConity 一周年线下 meetup 在北京召开。本期主题是《云原生数仓创新之路》,多位重磅嘉宾出席并分享了  ByConity 的最佳实践。

来自抖音集团的行为分析平台的何皓星分享了使用 ByConity 解决线上业务场景和和自身架构迭代的实践经验。

何皓星介绍,抖音内部有自己的数据分析产品——DataFinder,提供了一站式的数据采集、数仓分析、结果展示平台,支持产品使用行为数据实时采集和自助建模、分析、结果分享、数据监控,运营分析师上手就能用。目前,在抖音内部已经广泛使用,为包括抖音、今日头条、西瓜视频、剪映在内的上千个产品提供分析能力,EB 级别上报量大数据量达秒级响应。

起初,字节内使用 Kylin & Spark SQL 等架构支持业务,但当产品、维度变多,他们遇到了数据支撑规模 & 性能瓶颈,查询慢,业务体验也差。于是,他们把 Kylin & Spark SQL 等架构迁移到本地 ClickHouse,并针对 ClickHouse 局限性做了加强,最终搭建了一个最大2400台节点的 ClickHouse 集群以支持业务。

不过,到了后期,字节发现这套集群仍存在许多问题:随着业务体量的增加和功能的增多,埋点采集密度也越来越高,节点渐渐不够用了。于是,团队后期做了 ByConity 云原生引擎迁移共建。最终,2023年12月,抖音集团全产品离线分析都迁移到了 ByConity 上,ByConity 全面覆盖域内 DataFinder 分析场景。

接下来,何皓星详细分享了 DataFinder 在 ByConity 的最佳实践。抖音集团内 DataFinder 遇到的技术挑战如下:

  • SDK 上报侧 EB 级数据量,且还在不断增加
  • 支持数万维度属性分析,可灵活增加
  • 自助式交互查询,秒级响应;也需要较长历史数据的查询需求,比如1年
  • 主要是聚合查询,也有明细查询
  • 支持实时数据分析
  • 支持留存分析 & 转化分析等复杂场景
  • 资源成本严格控制

经过设计,DataFinder 的最终架构为:

首先,采集到的数据,会在数仓经过清洗和裁剪,最后由 DataFinder 的查询服务向用户提供分析能力,其中引擎层是 ByConity 存算分离的架构。

抖音集团行为分析迁移 ByConity,主要原因就是数据量特别大,用户发起的查询大小混杂,容易造成性能下降。即使是一个单表,抖音也需要支持多租户,而这方面 ClickHouse 难以支撑。之前使用的2400台节点的 ClickHouse 集群,运维代价特别高,且随着使用日久,机器也会老化。如果维修不及时,就会出现数据丢失等情况。而且,随着数据量的增长,ClickHouse 的磁盘早已不堪重负,抖音还是更青睐无限制的云存储产品。

迁移到 ByConity,能够完美解决上述困境:

  • 避免资源抢占,查询性能百分百稳定
  • 运维成本低,故障节点秒级替换
  • 存算分离;数据存储容量无需绑定物理机
  • 无感扩缩容,数据压缩率高,节约资源成本
  • 数据一致性强保障,维护复杂度接近为零

ByConity 的数据存储,利用了 ByteMap 隐式列存储属性字段,对于高低基数列,则支持 zstd / lz4 数据压缩,结合字典编码 & 动态字典编码压缩数据。数据按照 sharding key 分片,构建 bucket table,优化存储计算。

何皓星介绍,不考虑低基数环节的话,迁移之后的数据压缩率就超过了50%以上;考虑低基数的话,则仍有35%以上的压缩率提升。最终存到 ByConity 并经过一些数据治理之后,还有大几百 PB,相比于原来采样到的 EB 级别的数据,复杂度下降了。

在数据写入方面,也是依赖于 ByConity 的离线 数据写入方案。具体如下:

对于埋点日志数据离线写入,ByConity 支持 Spark 程序直接生成合并 Part 文件,支持分表导入,支持按列导入,多个画像写入一张表。如此性能更加稳定,不会出现各种数据难写入的情况。

对于埋点日志数据实时写入,主要依赖于 CnchKafka 引擎 HashBuffer 优化,支持 Exactly Once 语义,可以支持流批一体、直接写入数仓。

在查询优化方面,也已经完全能够支持 EB 级别的读写,秒级响应:

Bucket 表优化

  • 整数倍 bucket 表支持 colocate join
  • 一致性 hash 分配 worker 复用 cache

ByConity 优化器支持

  • 支持常态基于规则查询优化​​​​​​​
  • 计算Map key存储占用,支持下推 prewhere

亿级元信息秒级响应

  • ByConity 元信息读写锁优化
  • 支持 Part Preallocation,预先分配

查询负载均衡

  • 支持 vw 级别物理隔离执行资源
  • 自适应 vw 内 & vw 间查询调度,不同优先级查询分别保障

ByConity 还为抖音集团的行为分析场景提供了许多支持,像留存分析、转化分析、路径分析等能力,在场景优化、检索性能方面都做了集成,不仅给用户带来了良好的体验,也能通过这些算子搭建自己需要的业务分析模型。如:

开箱即用各类复杂功能算子

  • retention 留存算子
  • funnel 转化漏斗算子
  • pathFind 路径分析算子
  • stack 系列累计分析算子

特殊场景支持

  • bitmap 索引优化 array 检索性能
  • 支持直连 Hive 统一分析入口

之后,抖音集团会进一步提升查询性能,完善分布式缓存的兜底机制,为用户提供异步物化视图去做查询的加速,完善disk spill 能力,进一步加强 bitmap 索引。

其次,抖音集团会进行行为分析数据轻数仓建设,加强流批一体能力建设和 ELT 能力应用场景探索。

最后,会加强行为分析能力提升,探索向量数据库应用场景。增强监控与工具链,减少硬件问题的影响。

 

更多直播精彩内容,请点击链接观看:

https://www.bilibili.com/video/BV1w14212714/?spm_id_from=333.999.0.0&vd_source=71f3be2102fec1a0171b49a530cefad0

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
1 收藏
0
分享
返回顶部
顶部