数据处理不再是“脏活累活”,听听开发者们怎么说?

作者 | 凌敏

一直以来,数据处理都被视作“脏活累活”,从数据的收集、清洗、转换,再到存储、分析,每个步骤都可能遇到各种挑战,繁琐且耗时。近几年,随着大数据和人工智能技术的进步,数据处理变得更加自动化和智能化,但在面对复杂查询和 ETL 任务时,还是存在扩缩容成本高、性能受限等局限性。

为了解决这些痛点问题,2024 年 8 月,字节跳动开源云原生数据仓库 ByConity 增加了 BSP 模式,这一模式允许进行 task 级别的容错、更细粒度的调度,并支持资源感知的调度。通过引入 BSP 模式,将数据加工(T)的过程转移到 ByConity 内部,让开发者能够一站式完成数据接入、加工和分析,将数据处理从“脏活累活”转变为更加高效和智能的工作。

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

本次众测活动历时近一个月,吸引了来自金融、教育、安全等众多行业的数十名开发者参与,通过多种测试工具和环境测试 ByConity 的核心功能,并记录测试过程和心得(全部测试文档链接详见文末)。

我们对这些测试文档进行了梳理,总体来看,开发者对 ByConity BSP 模式的能力十分认可,在实际体验中,BSP 能大幅提升数据处理效率与容错能力。有开发者表示“ByConity 的实时查询速度是真的快啊,5 亿数据复杂查询也仅需 60s,真的巨快,之前遇到的业务场景中 1 千万数据还超时了,适合大数据量场景用。”本次活动也收集到了不少来自开发者的改进建议,ByConity 社区将根据这些反馈持续优化产品功能,构建一个更加活跃的开源生态。

1 BSP 模式体验:大幅提升数据处理效率与容错能力

不少参与测试的开发者反馈,BSP 模式的引入对数据处理效率和容错能力的提升至关重要。

BSP 模式通过将查询任务分割成多个 stage,实现了并行化处理,极大地降低了峰值内存的使用,提高了查询效率。此外,如果在 query 运行中遇到错误时,可以自动重试当前的 task,而不是从头开始重试,大大减少了重试成本。当 query 需要的内存巨大时,可以通过增加并行度来减少单位时间内内存的占用,理论上可以实现无限扩展。

在分布式查询中,ByConity 通过 distributed_max_parallel_size 参数允许用户根据集群资源和查询需求调整表扫描的并行度,优化查询性能。合理调整该参数,用户可以在保证查询性能的同时,避免资源的过度消耗和查询失败的风险。

在 BSP 模式下,ByConity 支持对 TableScan 算子的并行度进行扩展,这有助于在资源有限的情况下处理大表。用户可以通过设置 distributed_max_parallel_size 参数来控制 TableScan 的并行度,实现资源平铺的功能。

完美句号:

ByConity 在 ClickHouse 高性能计算框架的基础上,增加了对 BSP 模式的支持,可以进行 task 级别的容错 ; 更细粒度的调度,支持资源感知的调度:


①. 当 query 运行中遇到错误时,可以自动重试当前的 task,而不是从头进行重试。大大减少重试成本。

②. 当 query 需要的内存巨大,甚至大于单机的内存时,可以通过增加并行度来减少单位时间内内存的占用。只需要调大并行度参数即可,理论上是可以无限扩展的。

③. 可以根据集群资源使用情况有序调度并发 ETL 任务,从而减少资源的挤占,避免频繁失败。

④. 对于大的数据量,BSP 通过把一个查询切换成 N 个 task,可以加快查询的效率。

⑤. 通过 BSP 模式的效果非常的明显,通过 BSP 能力,把数据加工(T)的过程转移到 ByConity 内部,能够一站式完成数据接入、加工和分析。

⑥. 可以在 ByConity 开启几个不同的 vw,比如:vw1 专门跑批量数据,vw2 实时查询,vw2 专门使用 mpp 模式,通过这样拆分任务的方式,将需要查询最快时间查出来。然后 vw1 把表 ODS 数据清洗,加工到 vw2 的 DWD 里,然后 vw2 直接查 DWD 的数据。

程伟:

1. BSP 模式更适合大数据量的计算,可以通过分解并行任务,降低单个任务的内存需求,能够有效保障任务执行的稳定性,更适合 ELT,数仓等长任务场景。

2. BSP 的任务并行度,并不是设置的越高越好,设置的太高,内存占用低,执行时间长。设置的太低,内存不足,无法完成计算,需要多次尝试获取最佳值。

3. MPP 模式相对 BSP 模式,可以读取更少的数据完成查询,在短时任务的运行上更具优势。通过排序键、分区、索引等手段可以进一步减少需要操作的数据量,达到更快的查询速度。

穿过生命散发芬芳:

ByConity 增加的 BSP(Bulk Synchronous Parallel)模式是一个重要的功能更新,旨在提升数据处理的效率和容错能力。distributed_max_parallel_size 参数用于控制分布式查询中表扫描的并行度。通过调整这个参数,用户可以根据集群的资源情况和查询的需求来优化查询性能。

ByConity 的 ELT 能力能够简化数据处理的复杂性,提高系统的响应速度和可靠性。通过将大部分转换操作留在分析阶段,ByConity 能够更好地适应复杂的数据处理需求,特别是在实时数仓和离线数仓的场景中表现出色。

阿泽:

在 BSP 模式下,ByConity 支持对 TableScan 算子的并行度进行扩展,这有助于在资源有限的情况下实现对大表的处理。用户可以通过设置 distributed_max_parallel_size 参数来控制 TableScan 的并行度,实现资源平铺的功能。