告知我们一个好消息,字节跳动的云原生数据仓库ByConity正式宣告开源了。

ByConity 是一个云原生数据仓库,由字节跳动数据平台团队在世界闻名开源数据库办理体系ClickHouse 社区版别基础上开发。

前期,字节跳动的数据存储运用的是 ClickHouse 的开源版别。但因为业务体量大、业务场景杂乱,数据平台团队对此进行了大量的深度优化和自研改善,用以支撑字节跳动业务中各类与数据相关的功用模块,现在正式宣告开源,回馈社区。此前,字节跳动还发布过云原生数据仓库的商业化版别 ByteHouse。

ByConity 开源之前,字节跳动数据平台团队也曾考虑将自研修正合并回 ClickHouse 社区,与 ClickHouse 中心研制团队、ClickHouse 创业公司担任人交流后,得到的反馈是架构差异过大、合并难度和代价大、无法联合开发。依照 ClickHouse 社区给到的主张,数据平台团队决定独立开源。

ByConity 具有读写别离弹性扩缩容租户资源阻隔数据读写的强共同性等特点,其核算-存储别离的架构,结合干流的 OLAP 引擎优化,保证了优异的读写功用。

本年 1 月,ByConity Beta 版别发布后,得到了来自华为、电子云、展心展力、天翼云、唯品会、传音控股等十几家企业开发者的支撑,他们帮助 ByConity 在各自的场景下进行了测验与验证,并反馈出不错的作用。

话不多说,先上 GitHub 地址:

GitHub – ByConity/ByConity: ByConity is an open source cloud-native data warehouse

ByConity:三层架构的数据仓库

ByConity 的整体架构分为三层,包括服务接入层核算层数据存储层

@开源爱好者,字节跳动这项技术,正式宣布开源了

ByConity 三层技术架构图

服务接入层:

承受用户的查询,由一个或许多个 server 构成,并支撑水平扩张,充当的是响应用户服务和协调调度的角色。除了用户作业之外,在 ByConity 里还有后台任务,例如 compaction/gc 等等,这些后台任务由 Daemon manager 办理,调度到相应的 server 进行履行。

核算层

由一个或许多个核算组(Virutual Warehouwe,VW)构成,不同的租户能够运用不同的核算组完成物理资源阻隔。资源办理器担任对核算资源进行统一的办理和调度,能够收集各个核算组的功用数据、资源运用量,为查询、写入和后台任务动态分配资源并进行动态扩缩容,进步资源运用率。

数据存储层

用于存放用户数据。ByConity 的元数据和数据都完成了存储核算别离,元数据存储在分布式 key-value store 里,数据存储在分布式文件体系或许目标存储里。

@开源爱好者,字节跳动这项技术,正式宣布开源了

ByConity 内部组件交互图

目前,ByConity 支撑单机 Docker、K8s 集群布置、物理机布置和源代码编译四种获取和布置形式。

五年时刻,从 ClickHouse 到 ByConity

2018 年,字节跳动开端在内部运用 ClickHouse,因为业务发展迅速、用户体量大,数据规模变得越来越巨大。

因为 ClickHouse 是 Shared-Nothing 架构,每个节点相互独立,不会同享存储资源等,因此核算资源和存储资源紧耦合,这使它在字节跳动的应用进程中产生了一些不便之处。

比方扩缩容的本钱比较高,且会涉及到数据搬迁,不能实时按需扩缩容,导致资源浪费;比方多租户在同享集群环境相互影响,同时因为读写在同一个节点完成,导致读写相互影响;此外,ClickHouse 在杂乱查询上例如多表 Join 等操作的功用支撑并不是很好。

因此,字节跳动于 2020 年在内部启动了 ByConity 项目,在原有的 ClickHouse 架构基础上进行了晋级,将原本核算和存储分别在每个节点本地办理的架构,转换为在分布式存储上统一办理整个集群内所有数据的架构,使得每个核算节点成为一个无状况的单纯核算节点,并运用分布式存储的扩展才能和核算节点的无状况特性完成动态的扩缩容。

这种改善使得晋级后的架构具有以下重要特性:

  • 资源阻隔:对不同的租户进行资源的阻隔,租户之间不会受到相互影响;

  • 读写别离:核算资源和存储资源解耦,保证读操作和写操作不会相互影响;

  • 弹性扩缩容:支撑弹性的扩缩容,能够实时、按需的对核算资源进行扩缩容,保证资源的高效运用;

  • 数据强共同:数据读写的强共同性,保证数据始终是最新的,读写之间没有不共同;

  • 高功用:采用了干流的 OLAP 引擎优化,例如列存、向量化履行、MPP 履行、查询优化等提供优异的读写功用。

跟着对自研表引擎、查询优化器、存储核算架构的优化与自研改造,字节跳动内部有越来越多的场景逐步运用新架构,也在不同的场景中进行了验证与优化,渐渐沉淀出了一个云原生版别的数仓 ByConity。

加入字节跳动,一起做开源

字节跳动还将继续增强 ByConity 的功用、功用和易用性,其中开发新的存储引擎支撑更多的数据类型与其他数据办理工具的集成是要点重视的领域。

详细包含以下几个方向:

  • 功用提高:运用索引进行加快,包含 Skip-index 优化、新的 Zorder-index 和倒排索引等支撑、外表索引的构建和加快、以及索引的自动推荐和转换;查询优化器的继续优化;分布式缓存机制等。

  • 稳定性提高:支撑更多维度的资源阻隔,提供更好多租户才能;丰富 Metrics,提高可调查性和问题确诊才能。

  • 企业级特性增强:完成更细粒度权限控制;完善数据安全性相关的功用(备份、恢复和数据加密);继续探究数据的深度压缩,节约存储本钱。

  • 生态兼容性提高:支撑 S3、TOS 等目标存储;提高生态兼容性方便集成;支撑数据湖联邦查询如 Hudi、Iceberg等。

除开源版别之外,ByConity 产研团队还同时支撑商业化版别 ByteHouse 和字节内部产品线,ByConity 即为 ByteHouse 的内核。团队相关担任人表明,开源版和商业版融合度非常高,未来 ByConity 会朝更加敞开的引擎开发形式发展,后续对 ByteHouse 的改动会根据 ByConity 源代码用开源的方式来开发,开源先行,同步发展。