当前位置: 欣欣网 > 码农

字节跳动开源云原生数据仓库ByConity有奖众测,邀你体验完整的数仓能力

2024-11-26码农

来源|ByConity 开源社区

在数据驱动时代,高效的数据处理和分析能力已经成为企业竞争力的关键。在实际业务中,用户会基于不同的产品分别构建实时数仓和离线数仓。其中,实时数仓强调数据能够快速入库,且在入库的第一时间就可以进行分析,低时延的返回分析结果。而离线数仓强调复杂任务能够稳定的执行完,需要更好的内存管理。

ByConity 是字节跳动开源的云原生数据仓库,可以满足用户的多种数据分析场景。2024 年 8 月,ByConity 增加了 bsp 模式:可以进行 task 级别的容错;更细粒度的调度;基于资源感知的调度。希望通过 bsp 能力,把数据加工(T)的过程转移到 ByConity 内部,能够一站式完成数据接入、加工和分析。

为了让更多的开发者深入了解并体验 ByConity bsp 模式的能力,InfoQ 和 ByConity 社区联合举办「ByConity 有奖众测活动」,邀请广大开发者参与 ByConity bsp 模式在离线数仓场景的实际测试,通过亲身实践来感受其带来的高效与便捷。

0 1


ByConity 有奖众测参与指南

> 活动时间

2024 年 12 月 2 日 - 2024 年 12 月 20 日

> 众测要求

本次众测活动共提供两种测试类型,以满足不同用户的需求。

标准测试

  • 测试环境与数据集:社区提供测试环境与测试集,用户可以在提供好的环境中上手测试。

  • 测试内容:使用小资源跑 TPC-DS 数据集,中间加上一些参数调整。

  • 产出要求:产出对应测试文档并在 InfoQ 写作社区 + 掘金开发者社区发布。

  • 进阶测试

  • 测吧试环境与数据集 :用户使用自有环境 & 自有数据集进行测试。

  • 测试内容 :100G 以上数据,需要执行 10 分钟以上的查询,包含一个以上的 join 或 group by。

  • 产出要求 :产出对应测试文档并在 InfoQ 写作社区 + 掘金开发者社区发布。

  • > 参与方

    点击文章最下方「阅读原文」或者扫码海报报名二维码参与,参与标准测试开发者需完成测试并产出测试文章并发布,参与进阶测试开发者需在自有场景成功完成测试,能够胜任离线数仓的负载,并有对应测试文档产出并发布。

    参与者可添加小助手进答疑群

    > 参与奖品

  • 标准测试

  • 完成测试,填写测试反馈,送社区 T 恤

  • 发布测试文章,送其他社区精美礼品

  • 罗技(Logitech)蓝牙键盘(黑色 / 银色)

  • ByConity 一周年纪念版 t 恤

  • ByConity 双肩包

  • 抖音文创多功能三合一无线充电器

  • 进阶测试 :社区周边 + 进阶测试激励。

  • > ELT 任务对系统的要求

  • 整体易扩展 :导入和转换通常需要大量的资源,系统需要通过水平扩展的方式来满足数据量的快速增长。

  • 可靠性和容错能力 :大量的 job 能有序调度;出现 task 偶然失败(OOM)、container 失败时,能够拉起重试;能处理一定的数据倾斜。

  • 效率 & 性能 :有效利用多核多机并发能力;数据快速导入;内存使用有效(内存管理);CPU 优化(向量化、codegen)。

  • 生态 & 可观测性 :可对接多种工具;任务状态感知;任务进度感知;失败日志查询;有一定可视化能力。

  • 02


    ByConity 对 ELT 能力的优化

    > 提升任务并行度,保障业务平稳运行

    传统架构中,之所以要分别建设离线数仓和实时数仓,是因为常见的 OLAP 产品不擅长处理大量的复杂查询,很容易把内容打满任务中断,甚至造成宕机。

    ByConity 具备 BSP 模式,支持将查询切分为不同的 stage,每个 stage 独立运行。在此基础上,stage 内的数据也可以进行切分,并行化不再受节点数量限制,理论上可以无限扩展,从而大幅度降低峰值内存。

    > 任务级重试,减少重试成本

    离线加工任务的另外一个特点就是链路比较长,并且任务间有依赖关系。如下图所示,

    如上图所示,task4 依赖 task1、task2 的完成。如果 task1 失败发起重试,会显示为整个链路执行失败。 ByConity 增加了任务级重试能力,在 ByConity 中只有运行失败的 task 需要重试。

    > 大批量并行写入,稳且快

    实时数仓存在频繁更新的特点,使用重叠窗口进行批量 ETL 操作时,会带来大量的数据更新。在这种场景下, ByConity 做了大量的优化。

    (写入优化示意图)

    经过持续优化,将最耗时的数据写入部分单独并行化,并且在写入 part 文件时标记是否需要进行后续的 dedup 作业。在所有数据写入完毕后,由 server 指定一个 worker 进行 dedup 和最后的事务提交(如上图最右)。

    > 简化数据链路,提高健壮性

    ByConity 在传统的 MPP 链路基础上增加了对复杂查询的支持,这使得 join 等操作可以有效地得到执行。在数据交换方面,要求所有 stage 之间的依赖必须在查询执行之前以网络连接的形式体现。离线加工场景下,这种方式有着天然的劣势:

  • stage 较多、并行度较大时,每一个 task 出现的抖动都会影响整体链路,叠加的抖动增加任务失败的概率;

  • task 同时拉起会进一步对资源进行挤占。

  • BSP 模式使用 barrier 将各个 stage 进行隔离,每个 stage 独立运行,stage 之内的 task 也相互独立。即便机器环境发生变化,对查询的影响被限定在 task 级别。且每个 task 运行完毕后会及时释放计算资源,对资源的使用更加充分。

    在这个基础上,BSP 的这种设计更利于重试的设计。任务失败后,只需要重新拉起时读取它所依赖的任务的 shuffle 数据即可,而无需考虑任务状态。

    期待开发者持续关注 ByConity,同 ByConity 一起开启开启数据仓库的新篇章。