AI智能总结
ByConity的架构与设计:从ClickHouse到云原生 演讲人:王蕴博 王蕴博 字节跳动首席开源布道师、开源基础设施负责人。中国计算机学会(CCF)开源发展委员会副秘书长,CCFGitLink社区负责人,CCF GLCC发起人兼组委会主席。前腾讯开源联盟委员(TOSA),前滴滴开源办公室负责人。 长期专注于大数据、DevOps、AI等方向;对开源治理、项目孵化、开源合规等具有丰富的经验。 背景和设计理念 存算分离架构设计 用户案例分享 B y C o n i t y历 史 B y C o n i t y设 计 之 初 云原生 开源 d●开 源 让 软 件 更 早 接 触 用 户 ,了 解 用 户 真 实 需 求 ;●吸 引 外 部 开 发 者 参 与 , 汇聚 领 域 人 才 参 与 , 传 播 影响 力 ;●更 加 高 效 的 迭 代 , 软 件 更佳 安 全 和 健 康●开 源O p e n C o r e模 式 促 进商 业 化 , 拓 展 海 外 市 场 d●重 用 云 基 础 设 施 , 高 可 靠性 和 降 低 成 本 ;●整 个 系 统 和 架 构 设 计 从 开始 就 基 于 云 的 需 求 ;●存 算 分 离 避 免 了 传 统 分 布式 系 统 的 一 些 性 能 瓶 颈 和复 杂 性 开 源 从“命 名”开 始 ByConity是通过开源,融合一群希望打破常规技术的开发者,改变数据的使用方式 基 于 云 原 生 架 构 ●服 务 层 (C l o u d S e r v i c e) ●M e t a D a t e:F o u n d a t i o n D B / B y t e K V●S e r v e r:表 元 数 据 缓 存 、 查 询S Q L解 析 、 计 划生 成 、 调 度 和 下 发●R e s o u r c e M a n a g e r:服 务 发 现 、 负 载 心 跳 检 测●T S O:全 局 唯 ⼀ 单 调 递 增 的 时 间 戳●D a e m o n M a n a g e r:调 度 和 管 理 任 务 ●计 算 组 (Vi r t u a l Wa r e h o u s e,V W) ●Wo r k e r:执 行 片 段 的 执 ⾏ , 后 台 任 务 的 执 ⾏ 、L o c a l D i s k C a c h e●每 个 表 可 以 设 置 默 认 的R e a d V W(查 询 ) 和Wr i t e V W(导 入 和M e r g e ) ●存 储 层 (C l o u d S t o r a g e )●支 持H D F S、S 3 B y C o n i t y的 特 性 存 算 分 离 的 设 计 思 考 ●需要统一的元信息管理系统 ●分布式文件系统大多数存在元信息管理压力问题(nn)●分布式统一存储系统大多不支持rewrite,一些对象存储系统甚至不支持append●分布式对象存储系统大多move代价都比较高●io latency通常情况对比本地文件系统下都存在增加的情况 统 一 的 元 数 据 管 理 ●提供高可用和高性能的元数据读写服务 ●完备事务语义的支持 ●后端存储系统可插拔,方便扩展 数 据 存 储 结 构 ●合并小文件,每个part所有数据存储在一个文件中 数 据 变 更 ●读放大 数 据 合 并 ●异步merge ●Oldparts通过GC清理 数 据 缓 存 ●一致性hash分配parts ●热数据worker节点自动缓存 ●改进bucket-lru算法 ●避免数据reshuffling 唯 一 键 (U N I Q U EK E Y) 实际场景 ●数据源(如Kafka)包含重复数据,如何保障数仓表的数据质量?●业务数据流包含行更新,如何高效实时同步和分析?●如何提高RDBMS->数仓的同步时效性,并支持高效分析? 唯一键+Upsert ●面向读取操作进行优化●支持唯一键与排序键不同●支持基于版本字段的比较●支持行删除●支持表级别和分区级别 查 询 优 化 器 ●优化器:本质是对查询计划的等价转换,从中找到最优解或者较优解。ByConity实现了RBO和CBO ●RBO:基于规则的优化能力。使用一系列预定义的启发式规则来选择查询执行计划。 ●基于visitor的全局改写,例如filter下推、列的裁剪、SQL指纹等●基于pattern-match的局部改写,例如多个filter的merge、多个projection的merge ●CBO:基于代价的优化能力。通过收集和分析数据库中的统计信息来评估不同执行计划的成本,并选择成本最低的计划作为最佳计划。 ●基于Cascades搜索框架,遍历等价计划,评估每种等价计划的代价,选出最优解●JoinReorder超过10表启发式搜索●分布式执行计划,属性传递,基于代价生成最优的分布式计划 查 询 调 度 ●负责对生成的可执行计划plansegmenttree进行调度 ●Cache-aware调度–针对source,读取数据 ●最大化cache命中率,提升读写性能●拓扑发生变化时,最小化cache失效的影响 ●Resource-aware调度和流量控制–针对计算节点,纯计算 ●最大化资源利用率●合理使用资源,避免负载过高 计 算 组 实 践 案 例—用 户 分 析 系 统 实 践 案 例—M e t a A p p数 据 分 析 平 台 业务测试 带 来 哪 些 收 益 节约资源成本 运维成本降低 避免资源抢占 天然的资源隔离和租户隔离,不同用户查询相互不收到影响 存算分离架构,计算节点为无状态节点,发生故障秒级替换 d基于Kubernetes的弹性伸缩能力,实现无感扩缩容 开 源 社 区 发 展 Star1600+ PR1700+ Issue500+ 2 0 2 4年 整 体 规 划 性能提升 数仓能力 数据湖分析 •优化动态构建filter能力•全局字典•Zero-copy•非等值join算子优化•并行化重构•Bucket表优化•UncompressedCache优化•多表异步物化视图 •复杂大数据ELT稳定运行•RuntimeFilter性能优化•Shuffle性能优化•算子落盘•长事物优化•失败重试•MySQL兼容性•SQL诊断优化 •支持Hive表查询、写入•支持Hudi表查询、写入•支持Iceberg表查询•外表查询性能优化•外表物化视图•Hive元数据Catalog同步 生态 数据安全和备份恢复 易用性 •透明加密•表级快照•全量备份恢复 •一键部署•Localmode •Dbeaver•Kubeblocks•SugarBI•Quicksight 欢 迎 交 流&加 入 我 们 谢 谢 观 看