AI智能总结
⾼⼤⽉-字节跳动-资深研发⼯程师 DataFunSummit#2023 ⽬录CONTENT 03ByConity存算分离设计 01ByConity研发背景 04ByConity存算分离优化 01ByConity研发背景 DataFunSummit#2023 ClickHouse架构 Shared-nothing + MPP架构 •对等节点(no master) ClickHouse架构在字节遇到的问题 •扩缩容代价⾼•读写互相影响•多租户互相影响•资源浪费/总成本⾼ 存算分离概览 •优势-资源弹性与成本•计算与存储资源独⽴扩缩容-读写分离•读写任务使⽤不同的计算组-多租户隔离•不同租户使⽤不同的计算组•劣势•远程数据读写带来的性能损耗 02ByConity介绍 DataFunSummit#2023 ByConity是什么 •开源的云原⽣SQL数仓引擎-弹性扩缩容-读写分离-多租户隔离-⾼性能-数据强⼀致 ByConity时间线 •2018/01: ClickHouse开始在字节内部使⽤•2020/01:启动ByConity研发•2021/12:⽕⼭引擎发布ByteHouse云数仓版•2022/05:启动ByConity开源•2023/01:发布ByConity Beta•2023/05:发布ByConity 0.1.0 GA版本 https://www.volcengine.com/product/bytehouse ByConity架构 -Server-TSO-元数据存储(FDB)-ResourceManager-DaemonManager •计算组(Virtual Warehouse)-Worker-Disk Cache •云存储-HDFS-S3 ByConity组件交互 ByConity存算分离设计 DataFunSummit#2023 元数据管理 •元数据对象 •库/表/视图定义•DataPart, DeleteBitmap, etc•事务, Statistics, etc•KV Storage:⾼可⽤/⾼性能/持久化•Part元信息缓存•Table <-> Host Server•Master负责维护全局⼀致的拓扑信息 存储格式 •每个Part对应⼀个⽂件•⽂件内部保持按列存储•Part Name•partition_min_max_level_xid•min/max/xid从TSO分配•Mutation•多版本实现•Part Chain 数据写⼊ •阶段⼀ •创建事务记录并写⼊KV•将数据⽂件的undo信息写⼊KV•将Part⽂件写⼊云存储•将Part元数据写⼊KV •阶段⼆ •将事务记录CAS修改为Committed•异步清理•设置Part的提交时间•清理KV中的undo信息和事务记录 Local DiskCache •使⽤Worker本地盘缓存热数据 •缓存策略:频次/ preload•Bucket-LRU淘汰算法 •⼀致性哈希•拓扑发⽣变化时,最⼩化cache失效影响 •避免数据reshuffle 缓存粒度 •Segment •优势 •劣势 •存储存在少量浪费 缓存流程 ByConity存算分离优化 DataFunSummit#2023 元数据缓存优化 •Performance•Fine-grained locking•Adaptive scan strategy•Scan-wait-free map•Memory footprint•ServerDataPart (PB wrapper)•Dictionary encoding large fields•Isolation•Server VW 读写性能优化 •读取-索引/Checksums本地缓存+并⾏加载-Preload mode •写⼊-批量写⼊-多线程并⾏写⼊-Merge: prefetch input files 云存储客户端优化(libhdfs3) •Block Location Cache•Peer Cache•Fast Switch Read•Hedge Read Join the Community! •Byte +Convert + Community•主⻚: byconity.github.io•微信公众号: ByConity•哔哩哔哩: ByConity 感谢观看