Bolt 引擎是字节跳动开源的新一代原生执行引擎,面向企业级数据分析场景提供统一、高性能、可扩展的计算底座。它并不是为 Spark 单独定制的加速组件,而是以 “适配任意框架、运行于任意硬件、对接任意数据源” 为目标设计,可灵活接入 Spark、Presto、Flink 等主流计算框架,为多样化数据平台提供一致的原生加速能力。通过统一接口与可插拔架构,Bolt 引擎在帮助客户保障开放兼容的同时,能够进一步释放底层算力价值,实现更高性能、更低资源消耗和更强生态延展性。
说明
用户在使用 Bolt 加速能力时,将按照实际作业消耗的 CUH 支付相应的加速费用,详细计费规则请参见Bolt 加速引擎计费详情。
传统大数据平台往往面临多引擎、多数据源、多硬件、多特性并行演进带来的复杂适配问题。每增加一种执行引擎、一类数据源或一项能力增强,都会带来额外的开发、维护和优化成本,最终形成 “M × N” 式的复杂度放大。
Bolt 的核心设计理念,就是通过统一的原生执行与加速能力,将这种多维适配复杂度尽可能收敛。
Bolt 的技术路线可以概括为 “求同存异”。
基于这一理念,Bolt 重点在以下几个方向进行了持续优化。
根据真实运行时数据动态选择更合适的执行策略,例如在排序、HashBuild、HashJoin 等场景中结合数据特征、分区倾斜和内存使用情况进行动态调整,从而减少固定阈值带来的性能损耗。
围绕大数据执行中的共性热点,在 IO、表达式执行和比较路径上做针对性优化。例如通过异步 IO 提升 spill 等场景下的吞吐表现,并通过 JIT/CodeGen 优化 Sort、Agg、Join 等关键算子的热点路径。
针对复杂查询中的 Sort、Window、Shuffle、Spill 等关键路径,Bolt 通过算子融合、RowBasedSpill、RowBasedShuffle 等方式减少不必要的行列转换,进一步提升整体执行效率。
在底层统一抽象 CPU、内存、磁盘等资源管理能力,为上层 Spark 提供稳定、可扩展的原生执行能力,也为后续适配更多场景和硬件形态打下基础。
相比单纯追求某一种固定执行路径,Bolt 更强调在真实生产负载中选择更合适的执行方式,这也是其在复杂 SQL 场景下能够持续释放性能收益的重要原因。
Bolt 已在字节内部及多家外部客户的多个生产场景中持续落地,并在 Spark、Presto、Flink 等引擎上完成验证。目前,Bolt 在字节域内已实现 100% PrestoSQL 和约 85% SparkSQL 任务覆盖。
以 Spark 场景为例,字节域内 Java runtime 已在开源 Spark on Java 的基础上经过长期优化,整体性能较开源版本提升 2~3 倍;在此基础上,Spark on Bolt 仍可进一步带来约 1.5x 的性能提升。PrestoSQL 场景则已实现全量覆盖,并获得约 2x 的加速收益,体现出 Bolt 在大规模生产环境中的持续优化能力。
在标准基准测试方面,基于 Vanilla Spark 3.5 + Gluten + Bolt Backend 的 TPC-DS SF1000 开箱测试中,Bolt 相比开源 Velox backend 平均耗时进一步节省 22% ,TPCDS 加速比 1.22x,体现出相比开源加速引擎解决方案的差异化优势。
火山引擎 EMR Serverless 已深度集成 Bolt Native Engine,客户无需改造原有 Spark 使用习惯,即可在现有 Serverless Spark 体系内获得原生加速能力。针对不同业务场景,客户可以在任务运行时按需选择引擎 runtime(运行时),在保持原有 Spark SQL 兼容性与业务链路稳定性的前提下,平滑切换至 Spark on Bolt,进一步释放复杂 SQL 场景下的计算性能与资源效率。
Bolt 已正式面向开源社区开放(开源仓库:https://github.com/bytedance/bolt),并持续完善多框架、多数据源及异构硬件方向的生态能力。对于企业客户而言,也无需自行完成复杂集成,直接通过火山引擎 EMR Serverless 即可开箱即用地获得已深度集成的 Bolt 加速能力,在保持原有 Spark 生态兼容的同时,进一步提升SQL场景下的性能与资源效率。