更快、更稳、更省,火山引擎ByteHouse云数仓都有哪些黑科技?

360影视 2025-01-09 18:00 3

摘要:导读在数字经济蓬勃发展的今天,企业面临着数据量爆炸性增长和数据分析需求日益复杂的双重挑战,传统数据仓库解决方案已经难以满足企业对数据处理速度和灵活性的高要求。

导读在数字经济蓬勃发展的今天,企业面临着数据量爆炸性增长和数据分析需求日益复杂的双重挑战,传统数据仓库解决方案已经难以满足企业对数据处理速度和灵活性的高要求。

为此,火山引擎推出专为云原生环境设计的高性能数据仓库产品ByteHouse,具备便捷的弹性扩缩容能力、极致的分析性能和丰富的企业级特性,能够支撑实时数据分析以及海量的数据离线分析,为用户提供极速分析体验。

近期,火山引擎线上举办《ByteHouse云数仓版产品白皮书发布会》,以白皮书形式解读ByteHouse先进的技术架构、性能得以飞跃的关键技术、如何基于ELT实现大规模数据处理和复杂查询优化,以及ByteHouse所具备的良好弹性能力。

全文目录:

1. ByteHouse白皮书七大要点全面解读

2. 聚焦OLAP性能提升,铸就更快云数仓

3. 更高效的数据ELT方式,带来更稳数据加工体验

4. 打造弹性云数仓,让资源成本省上加省

早在2022年初,ByteHouse在抖音集团内部的部署规模已超过1万8000台,最大的集群规模在 2400 余个节点,管理总数据量超过700PB,并且依然在不断增长,对外也经过游戏、汽车、泛互联网等众多行业,数百个应用场景和数万用户锤炼。

ByteHouse云数仓使用云原生架构,实现了存算分离,意味着计算和存储资源可以分别按需弹性扩展,从而极大地提高了资源的利用率。同时,ByteHouse以多租户隔离技术确保每个租户的资源相互独立,为数据安全提供了充分保障。性能方面,ByteHouse配备了专属Server、智能缓存、向量引擎、查询优化器等先进技术和组件,为用户提供极致性能体验。除此之外,ByteHouse 云数仓六大核心引擎能力将湖仓一体、GIS时空分析、全文检索、向量检索、OLAP分析以及离线数仓ELT等场景融为一体,为企业的数据分析提供更优解。另外,ByteHouse围绕引擎构建了9级核心管控能力,真正实现极简化操作,为企业提供了全方位的数据管理能力。

ByteHouse架构图

在弹性和成本控制方面, ByteHouse 拥有出色表现,以四大特征帮助企业实现性能和成本的完美平衡:

自动启停:能够根据业务的自动负,自动地启动和停止计算资源,可为整个企业的成本节省 20% 以上。定时弹性:可以根据时间规律,在业务的高峰期和低谷期灵活调整计算资源的规模,进一步节省25%成本。动态负载弹性:确保在面对突发高负载场景时能够自动分配资源,负载下降时则自动缩减资源,获得极致性价比。潮汐集群:专门针对高 QPS 场景进行流量智能分发,保障系统在高并发场景下能够稳定运行。

性能方面,ByteHouse从硬件架构、引擎生态等方向为客户提供高效、快速的性能优化方案,提升客户分析效率,缩短决策周期。

硬件和架构层面,采用向量化引擎、读写隔离、列式存储、专属Server、智能缓存、潮汐集群等技术,大幅提升查询、写入的并发以及数据的处理速度。引擎层和生态方面,通过RBO&CBO结合的优化器、深度优化的查询执行计划、多种索引技术以及物化视图、runtime Filter等技术的结合,实现复杂分析的快速处理。

在大批量复杂查询场景中, ByteHouse 实现了高效 ELT 的执行,以BSP模式来保障查询的稳定性,降低峰值内存压力。同时,其自身强健的容错机制可减少用户侧重试成本,确保数据处理连续性,而大批量的并行写入简化了数据链路,提高了整个系统的鲁棒性。

智能调度作为ByteHouse的亮点之一,可通过查询队列管理、自适应队列管理、负载感知等技术管控用户的查询及分发,实现业务的“削峰填谷”,以更优化的资源分配,确保数据库在各种负载情况下能够长稳地运行。

ByteHouse 湖仓一体结构,为客户带来巨大效能提升。其支持外表读、写以及外表的物化视图,并以智能缓存技术对元数据进行高效管理。Native reader、IO 优化以及多级缓存等功能,可确保湖仓的数据访问性能。

湖仓一体架构的优势在于数据零迁移,且因为读写双通,简化了整个数据中台架构的同时,也为客户提供了一致性的数据体验。后续,ByteHouse还将继续通过智能缓存、统一元数据管理等技术,提升数据管理效率,帮助企业充分发掘数据价值。

针对不同业务场景,ByteHouse提供了多元化的引擎,具备全面的分析能力:

GIS时空分析:ByteHouse的 GIS 引擎兼容 OGC 标准,能够与传统 GIS 行业的地图服务软件轻松集成,同时支持矢量和栅格等数据类型的处理,通过GIS的索引以及丰富的GIS函数,提供优秀性能。当前,GIS引擎已经深入应用于抖音本地生活的部分广告营销、行为分析等业务领域,并带来显著效果及ROI提升。全文检索:借助倒排索引能力以及BLK生态,ByteHouse可为用户提供高效文本检索能力。向量检索:通过向量索引所构建的高性能执行链路,在以图搜图、智能推荐等场景中具有较大价值,可满足客户在不同场景下的数据分析需求。

目前,ByteHouse的生态兼容性已趋于完善,能够与客户现有的技术架构无缝的对接,快速融入到客户的数据生态系统中,降低迁移和学习成本。

集成生态方面, ByteHouse支持流式、批量的导入工具,保障数据能够准确且稳定地入库,同时也实现了广泛的生态工具兼容,对数据库进行查询、开发、管理、调度。通过一站式处理,目前主流的工具都已得到适配。SQL 语法方面,ByteHouse兼容 ClickHouse、MySQL、ANSI SQL等标准语法,在实际应用迁移场景中,用户可快速无缝切换。BI 工具方面,借助多语法的兼容能力,ByteHouse实现了 BI 应用层的无缝迁移,以不同 SQL 构建数据集的过程中无需转换和改写。

未来,ByteHouse还将持续增强以下能力:

高并发查询:ByteHouse 将引入智能缓存 2.0 技术,构建分布式缓存以进一步提升查询性能和并发处理能力。同时构建潮汐集群,根据负载动态调整计算资源的规模,保障高并发情况下的稳定和高性能。云原生湖仓分析:ByteHouse 将对热点数据进行高效缓存,减少对远端数据的依赖,降低数据访问延时。同时还将整合数据湖和数据仓库的元数据,提供统一数据管理视图,在简化数据的管理流程的前提下,提高数据的处理和治理效率。AI 融合:智能化运维如 SQL诊断优化, schema推荐,索引的推荐等等。智能加速服务如 Automv。AI in ByteHouse:AI on ByteHouse:构建 AI 工程化的平台,承载AI 全流程的计算和数据负载。实时数仓:计划支持多表关联的物化视图以及物化视图的增量更新,提升实时数据的处理效率和灵活性。支持 binlog 能力,进一步完善数据同步机制,确保数据的实时性和一致性。

02

聚焦OLAP性能提升,铸就更快云数仓

在拥有先进架构、多样化功能的基础上,ByteHouse云数仓还针对OLAP、高并发点查以及湖仓一体等场景进行了针对性优化,并借助一系列关键技术在性能方面实现了飞跃,在 OLAP 标准数据集方面拥有出色的性能表现。对比某开源 OLAP 产品“D”,以业界测试数仓的标准数据集 SSB 和 TPC DS 对 OLAP 性能进行评估,在 SSB 1TB 宽表场景中, ByteHouse 云数仓相比开源产品实现了 49% 的性能的超越,在 TPC DS 1TB 的场景中, ByteHouse 云数仓实现了 16% 的性能超越。

ByteHouse的出色OLAP性能,首先建立在高效执行计划的基础之上,这就需要优化器对执行计划进行优化。ByteHouse拥有从 0 到 1 自研的查询优化器,用户查询会被分析并改写成基础执行计划,再经过优化器的 RBO 和CBO,最终得到分布式的最优执行计划。

RBO

ByteHouse支持基于表的属性推导来生成更优的执行计划,优化器可自动识别数据属性并生成 local join,避免数据shuffle。对于子查询解关联, ByteHouse 的 RBO 实现了完整的解关联算法,可完整支持所有 TPCDS 查询,并将子查询转成 join aggregation 等算子执行。对于 distinct 查询,优化器自动将其转化为 group by 查询,特别是对于高基数去重,能显著提升并行化处理和执行性能。此外,ByteHouse 优化器还支持 multi-distinct 转 group by,通过数据复制和并行化计算方式,进一步优化多个 distinct 值的高效计算。

CBO :

基于统计信息来估算不同执行计划的代价,并选择其中代价最低的执行计划。ByteHouse 的CBO优化器实现了基于采样及自动的统计信息收集,从而提升了统计信息计算的准确率以及时效性,在join Reorder、join算法挑选、runtime FILTER、filter下推以及CTE等场景中都有出色的性能表现。

查询执行器

有了高效执行计划后,ByteHouse还通过优化一系列查询执行器模块优化,提升执行器的执行效率:

Runtime Filter 优化:在join操作中,利用构建端的哈希表生成filter,过滤左表的数据。这种方式显著减少了左表中需要参与计算的数据量。并发 Hash Join 算法:ByteHouse 实现了并发 Hash Join 算法,支持构建端(build)和探测端(probe)通过多线程并行处理,提升 join 操作的效率。Exchange 优化:在 MPP架构中,exchange是核心模块。ByteHouse 在此模块中进行了连接复用和零拷贝等优化,以基于 BRPC 流式传输机制实现一对多、多对多以及多对一等数据交换模式的支持。内存分配优化:针对 join 操作中涉及的大量内存分配和数据拷贝,ByteHouse对哈希表的内存分配进行了优化,实现了无锁内存分配,并引入大页缓存以提升内存管理效率。算子并行化与优化:通过对计算的并行化重构,ByteHouse 基于上下游算子的特征,减少无意义的聚合(AGG)和 join 的 shuffle 操作,从而进一步优化计算性能。自适应执行策略:针对算子内部的优化,例如在AGG操作中,依据输入数据基数的高低,自适应选择执行局部聚合或数据重分布等策略。这种方式利用数据聚合特性,减少了网络传输的数据量。远端IO访问优化

ByteHouse借鉴计算机架构中的缓存层级设计,为远端 IO 访问采取了多层次优化措施。根据使用频率,数据被划分为热数据、温数据和冷数据并分别应用于DRAM 缓存、本地磁盘缓存以及分布式缓存,以减少远端存储访问延迟。

针对本地磁盘缓存,ByteHouse通过数据预取和 IO 合并优化,减少对远端存储的小 IO 请求,将远端访问延迟隐藏在数据预取过程中,提升整体性能。

对实时写入场景,ByteHouse 支持用户以手动或自动方式配置数据预加载策略,从而能够将新写入的数据提前加载到对应计算节点的本地缓存中,简化用户操作。

针对查询处理链路中,点查在Server层、worker层可能遇到的多方面瓶颈,ByteHouse也做了相应的优化:

Server 层

以专属 Server实现租户资源强隔离,保障高并发业务稳定性。针对点查设计短路执行计划,仅保留必要的优化规则,降低优化器耗时。利用分桶裁剪算法,减少不必要的元数据处理及分布式调度开销。合并元数据与计划片段的 RPC 调用,减少链路通信次数。

Worker 层

实现更轻量化分区裁剪策略,降低 CPU 消耗结合数据预加载策略,将点查数据尽量保存在内存或本地缓存中,减少冷读延迟。后续将开发行级索引和行存,定位目标行号并优化热点行读取,减少单个查询所需IO次数,减少读放大问题。

此外,ByteHouse还解决了全局大锁导致资源无法打满的问题,并在整个执行链路中,尽可能的减少线程的创建来降低上下文切换的开销。基于场景的日志级别控制功能,可在输出详尽日志的同时减少整体输出量,降低对性能的影响。元数据方面则是进行了尽可能的合并及移除,避免重复下发。

优化前,ByteHouse对于点查仅可实现1000 ~ 2000QPS,优化后可支持1万以上点查QPS,且租户可以通过购买专属 Server 来实现资源的强隔离,后续能够通过节点的水平扩容来继续增加QPS。

湖仓一体场景优化

ByteHouse 的湖仓一体架构通过外表支持,提供对Iceberg、HUDI等主流数据湖格式的读写能力,在 Server 端实现了 Multi Catalog 功能,简化元数据的打通;在数据生产和加工链路,可基于外表构建物化视图,并通过内表的物化视图加速外表查询。

对数据湖常用的 parquet 格式,ByteHouse以C++开发了native reader:

可直接将数据读入ByteHouse内存格式,避免了数据的反复的序列化和反序列化。原生支持直接读取低基数类型,提升特定场景的性能。实现灵活的谓词下推和延迟物化,进一步提高查询效率。

对于远端IO

合并邻近的小IO,减少访问延迟。以并行方式预读取Raw Group 隐藏 IO 延迟。针对 HDFS 等存储系统,通过 Hadoop 特性减少慢节点的性能抖动。

此外在web场景中,ByteHouse也实现了包括 DISK 缓存和中间结果缓存在内的多级缓存,减少了远端访问频率。在对于Hive外表的查询性能测试中,ByteHouse在SSB100G冷读场景中对比某开源产品T,性能提升34%,在TPCDS100G冷读场景中,对比某开源产品S,性能提升 18%;对比开源产品 T,性能提升 270%。

03

更高效的数据ELT方式,带来更稳数据加工体验

在高性能的同时,云数仓还需要保证数据的稳定性。ByteDance通过更先进的数据ELT方式以及相应优化,在带来极致性能的同时,为海量数据提供稳定性保障。数据在进入 OLAP 引擎之前需要以批处理引擎进行数据转换,ByteHouse采取的ELT方式意味着把数据先加载到ByteHouse再进行转换,最后生成 ADS 层供各种交互式查询的应用使用。相比传统ETL方式,ELT架构的加载和转换都在同一个引擎内部,运维以及数据资源的浪费较少,用户的体验更好。

此外,ByteHouse 的唯一键表可以高效进行数据去重、更新和插入,有利于实现更实时的ELT。而ByteHouse 的高性能可以提升加工速度,降低任务就绪时间。然而,ELT也面临一系列挑战:

重试成本高:传统 MPP 执行模式需要在整个查询级别重试,大任务失败后需从头开始,导致高代价。资源占用大:查询执行需要预占所有任务的资源,大任务可能引发 OOM 或 CPU 过载。资源争抢问题:查询任务间缺乏有效的负载和资源管理,导致资源挤占和成功率下降。

因此,ByteHouse对分配方式、资源管理进行了优化:

降低重试成本:引入 BSP并行计算模型,将查询拆分为多个stage,按依赖顺序逐步执行。数据通过 Exchange 落盘,支持子任务级别重试,避免重复执行已完成的部分。优化资源占用:将任务拆分并扩展实例并行度,降低单任务资源需求。同时,支持 Join、AGG、Sort 等算子溢出内存时自动落盘,以批量合并减少小文件开销。基于内存水位自动触发算子,无需手动配置内存阈值。解决资源挤占:读写分离:将前台交互式查询和后台数据加工、Merge、导入等任务分配至不同 VW,实现物理隔离。自适应查询排队:基于 Worker 的实时负载或CPU占用等因素,动态调整查询优先级并排队,减少资源争抢。资源协商调度:任务执行前向资源管理中心申请资源,结合机器学习预测任务资源需求,精准分配资源。

某数字娱乐公司 ODS 层总量千亿级别,最大的表每天有 10 亿条增量,每天运行数百个任务和上万个查询、单任务运行时间小时级别。引入 BSP 之前,查询成功率在 90% 左右,且存在不稳定情况。引入BSP并优化之后,不同日期任务成功率提升 3~6 个百分点、总体成功率接近 100%,且task级别的重试次数降至几十次,避免了可能的延迟。同时由于使用并行度拓展,最大表加工任务峰值内存下降了40%, CPU使用率也有显著降低。

后续就数据加工稳定性的优化,ByteHouse可分为更智能、更实时等两大方向。

更智能方向上,主要通过自适应查询执行(AQE)实现,通过 BSP 模型逐阶段执行的特点,利用上一个阶段执行后的实际信息动态优化下一个阶段的执行计划,解决传统 MPP 模式中过度依赖统计信息、导致计划误差的问题。

自动分区合并:根据上游输出数据量调整下游并行度,优化资源分配。数据倾斜处理:针对分区数据不均衡的情况,增加大分区的并行度,减少处理瓶颈。Join 策略动态调整:基于右表输出规模,动态选择 Broadcast Join 或其他 Join 策略,提升执行效率。

更实时方向上,主要通过更好的增量计算支持,来避免全量计算资源开销,实现分钟级别的实时任务处理。

变更数据捕获(CDC):在表上启用 Binlog,支持增量数据查询,捕获指定时间段的变更数据。增量计划生成:根据增量数据生成对应的执行计划,仅计算新增或变更部分。动态表抽象:提供动态表功能,用户只需书写普通 SQL,系统自动推导并处理增量部分。

数据已成为企业降本提效面临关键挑战的关键点。ByteHouse作为领先的云原生数仓产品,以优秀的弹性能力,帮助企业高效管理和利用计算、存储资源,充分释放数据价值。

传统的数据中台由于架构限制,存在资源浪费和扩展受限等一系列问题:

资源浪费、扩展受限:计算资源或者存储资源难以根据业务需求灵活调配,往往会导致整个集群架构的利用率较低。性能下降、数据延迟:集群资源不足时,可能会因为缺乏计算或存储资源导致无法扩容,严重影响业务分析和运营的效率。成本上升、资源闲置:如果没有负载弹性的能力,只能整体扩容,造成成本冗余。运维复杂、故障恢复难:当资源无法弹性伸缩,但业务方有扩容需求时,运维人员只能手动计算并配置资源,复杂度高。而当出现业务故障时,运维人员需要同时恢复存储存和计算,容易影响业务的连续性。

由此,ByteHouse推出一系列弹性能力,帮助企业优化和解决以上问题。

业务隔离能力:ByteHouse可实现不同业务部门计算资源相互独立、相互隔离,可根据具体业务场景需要,分别制定弹性策略。不仅保障了数据安全,同时也能够令性能在符合预期的前提下做到成本最优。

自动启停功能:资源将根据业务需求自动启停,避免资源闲置浪费,大约能够节省 20% 成本。

定时弹性策略:可以以时间为前提条件,根据高低峰业务需求设定自动扩缩容时间段。定时弹性策略不仅减少了手动管理的操作负担,同时也大幅提升了资源的利用效率,将整体成本降低 25% 以上。

负载弹性:实时监控CPU、内存、QPS等关键指标,根据关键指标情况动态调整计算资源,帮助用户实现弹性、自动化扩缩容。

此外,ByteHouse还即将推出潮汐集群功能,能够在高并发、高QPS的场景下,按照负载自动横向扩展,并自动将查询流量平均分发到额外计算组。由于流量为平均分配,可确保高并发场景下整体查询性能不受损失。

在应用实践方面,ByteHouse的弹性能力帮助企业在多个不同场景中获取更大价值。

ByteHouse具有按需扩展业务的动态增长能力,在促销场景、突发流量高峰时,能够以弹性能力动态调整资源、响应高 QPS 请求,确保业务的连续和数据的查询性能,为用户提供流畅购物体验。

企业的数字化转型过程中,ByteHouse通过资源隔离、自动启停、动态弹性和按需释放闲置资源等策略,帮助企业优化数据架构,提升运营效率。

针对市场的不断变化,ByteDance以弹性能力支持客户完成复杂的数据分析,满足实时洞察需求,缩短客户决策周期,令企业获得更大市场竞争力。

来源:DataFunTalk

相关推荐