更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群今日解读:ByteHouse视角下的新一代云数仓。主要内容包括:ByteHouse简介、云数仓核心能力解析以及最佳实践。
ByteHouse简介
ByteHouse是火山引擎数智平台VeDI旗下的一款云原生数仓产品,以 ClickHouse 技术路线为基础,为用户提供极速分析体验,能够支撑实时数据分析和海量数据离线分析,具备便捷的弹性扩缩容能力,极致分析性能和丰富的企业级特性,为海量数据规模下的聚合性分析提供支撑。 分析型数据库,与数据库技术同步发展,已有四十余年历史。其在海量数据处理与聚合分析中扮演关键角色,尤其在互联网、移动互联网及AI大模型兴起后,对用户画像和行为分析的需求激增,凸显了分析型数据库的重要性。 随着数据量的爆炸性增长,对分析性能的要求水涨船高,促使分布式计算技术的成熟与应用,以应对大规模数据的处理需求。 分布式技术的核心在于其横向扩展能力,通过并行计算(MPP)和share nothing架构,实现了数据处理的高效与灵活。近十年,云计算的兴起进一步推动了分布式技术的革新,尤其是存算分离的概念,有效解决了传统架构中的瓶颈,使得分布式系统能够更好地适应云环境,实现资源的优化配置和弹性扩展。云原生理念的融入,为分布式系统的迭代和优化提供了新的路径,通过局部重构,实现了系统性能与效率的双重提升。 数据分析型数据库在历史发展中,不断吸收新技术,如分布式计算和云原生架构,以应对数据规模的不断膨胀和分析需求的日益复杂,成为现代数据处理不可或缺的基石。 ByteHouse,源于对内服务,自2017年底立项,选择ClickHouse技术路线深度优化,迅速成长为内部数据分析的核心,截止到2022年3月,ByteHouse 节点总数已经达到了18,000,最大的行为分析集群超过了2,400个节点,数据量超过700PB。 基于内部的成功实践,2019至2020年间,ByteHouse通过火山引擎公有云平台,正式向外界输出其成熟技术。旨在以ByteHouse为载体,赋能各行各业,加速数据驱动的业务创新与决策优化,助力企业实现数据价值最大化。云数仓核心能力解析
面对云数仓与数据分析平台的挑战,企业正经历一场技术与需求的双重考验。这些挑战不仅定义了当前行业的痛点,也指明了产品演进的路径。具体而言,挑战可归纳为五个方面。- 高吞吐与去重能力:数据爆炸式增长,尤其在5G和大模型(如LLM)的推动下,日志数据量激增至百亿、千亿级。如何实现高吞吐量写入,并进行去重处理,成为技术难点。例如,游戏领域需以每秒百万级的性能进行去重写入,对数据平台提出了严峻挑战。
- 性能与并发需求升级:数据量虽庞大,但对性能与并发性的要求却日益严苛。分析查询需达到毫秒级响应,以适应实时反馈需求,如用户行为、业务决策、广告投放的实时性要求。此外,面对数十万乃至上百万的并发用户,如何确保低时延响应,是另一大挑战。
- 架构复杂与数据冗余:企业规模增长,导致分析架构愈发复杂,多组件并行工作,形成“七国八制”局面,增加了数据冗余,影响数据质量和运维效率。
- 灵活性与弹性伸缩:传统存算耦合架构的僵化,导致资源扩容与调整困难,影响业务连续性。扩容过程中的业务中断及长耗时,与实时化、在线化的业务趋势相悖,对用户体验构成威胁。
- 成本控制与性能平衡:海量数据处理中,如何在保证性能体验的同时,避免成本无序增长,是企业面临的又一难题。预购资源按峰值需求配置,导致资源闲置,维护与开发成本高昂,以及被供应商锁定的风险,都增加了成本控制的复杂性。
性能优化,OLAP领域永恒的追求
云数仓的核心能力首推性能优化,这是OLAP领域乃至所有技术追求的永恒主题,根植于人类的探索本能。面对各类场景中的性能瓶颈,ByteHouse积极应对,通过自研与增强,致力于提升处理速度与效率。 无论是高吞吐写入、去重处理,还是毫秒级响应与高并发支持,ByteHouse均投入大量研发资源,针对性解决性能挑战,确保在不同业务场景下,数据处理既快又稳,满足实时分析与决策需求。 场景一:在实时高吞吐场景,如IoT领域,ByteHouse通过支持原子性、不分裂更新等特性,确保了海量数据下每秒几百万条记录的高性能写入,同时实现了落盘即更新。ByteHouse自研的uniqueMergeTree引擎进一步强化了写入性能,满足IoT实时数据写入需求。通过自研的Flink Connector,ByteHouse与Flink无缝对接,高效处理海量数据。以游戏行业为例,一款热门游戏每秒产生220万条日志,约4GB数据,对实时吞吐能力构成严峻挑战。ByteHouse凭借上述技术,成功支撑了这一高要求场景,并展现出性能的线性增长潜力。 场景二:针对BI慢、报表慢、指标平台慢等问题,ByteHouse在预聚合功能上进行了深度优化,通过适度增强与projection技术,加速复杂查询与计算逻辑的执行,显著提升应用层性能。此外,多层级的查询缓存机制,不仅缓存数据,还能缓存复杂查询的中间结果与最终结果,极大提高了查询效率。在对接Kafka方面,增强型Kafka连接器确保了数据的高效消费,以娱乐公司为例,每天15亿记录,峰值TPS达6万,通过CDC技术,实时数据从传统的T+1时效性压缩至分钟级甚至秒级,实现了准实时报表的高效展示。 场景三:在面对离线与在线复杂分析的性能瓶颈时,ByteHouse通过自研优化器,尤其是持续迭代的CBO(Cost-Based Optimizer)与RBO(Rule-Based Optimizer),显著提升了分析效率。特别针对非等值查询、多表关联等场景进行了深度优化,同时,聚焦于影响性能的关键算子,如聚合(Agg)算子和字符串算子,实施了针对性的性能增强,有效加速了复杂分析的处理速度,满足了用户对数据分析性能的高要求。 为优化大表关联场景的性能,ByteHouse引入了runtime filter技术,有效提升了处理效率,尤其在动态需求下表现显著。同时,自研的分布式缓存方案,旨在解决存算分离架构下的性能损失,目标是在不依赖本地缓存的情况下,使性能逼近存算一体架构。智能化分布式缓存技术,ByteHouse致力于在2025 年上半年实现产品化,进一步增强数据分析性能,特别是在存算分离场景下,为用户提供更接近存算一体的高效体验。 使用OLAP产品时,用户常面临计算虽快,但离线与在线分析难以一体化,尤其在ETL(Extract, Transform, Load)处理上存在短板。ByteHouse通过引入BSP(Bulk Synchronous Parallel)模式及算子落盘技术,有效解决了这一问题。即使在复杂ETL任务,尤其是高并发的transform类型任务中,ByteHouse也能确保稳定运行,大幅减少了OLAP领域常见的OOM(Out of Memory)现象,实现了离在线一体化的高效数据处理,显著提升了用户在高负载场景下的使用体验。 场景四:在湖仓联邦分析领域,性能提升是关键。ByteHouse通过native reader技术优化对Orc和Parquet格式数据的读取,有效压缩IO访问路径,显著提升外表访问性能。正在研发的Data Fabric技术,支持多表误报能力,预期将进一步加速湖仓访问,预计今年下半年实现产品化。ByteHouse能实时识别大数据外表的schema变更,自动同步更新,确保数据一致性。更关键的是,外表读取与优化器深度集成,基于统计数据生成最优执行计划,实现算子级下推,大幅加速湖仓分析性能。在实际应用中,ByteHouse的外表读取性能相较于传统Presto+对象存储方案,展现出2到5倍甚至更高的性能提升,为用户提供了更高效的数据分析体验。 场景五:在人群分析与行为分析等垂直业务场景中,性能至关重要。ByteHouse凭借其在抖音集团内部广泛应用的优势,成为人群圈选与行为分析的强力支撑。技术层面,ByteHouse的自研BitEngine、Bitmap和Index增强技术领先于社区,为高效分析奠定基础。同时,与上层应用如增长分析平台DataFinder、行为分析平台和CDP紧密集成,深入理解业务需求,内置了如留存、路径分析和漏斗等常用分析函数,确保了最佳性能。目前,这些分析函数已超过二三十种,有效提升了人群圈选的响应速度,即使面对十亿级用户数据,也能实现秒级响应。 这一优化成果在抖音集团内部得到了充分验证,支撑了上千个活跃项目,平台日处理事件规模达到万亿级别,充分展现了ByteHouse在人群分析领域的卓越性能与处理能力。 场景五:随着大模型的兴起,如舆情分析等场景对性能的要求日益提高,尤其在处理社交媒体、短视频等产生的海量文本和音视频数据时,需在更短时间内快速识别并解决问题,防止事态恶化,性能成为关键。为应对这一挑战,向量化引擎成为核心技术。ByteHouse自主研发的Vector Search引擎,集成于其核心,不仅兼容主流算法库,还提供了比开源更丰富的算法选项。在性能优化方面,ByteHouse实施了IO优化、计算前置、冗余消除及向量缓存等策略,有效提升了图像搜索和知识库检索场景下的检索速度,满足了大数据环境下对高效、精准信息处理的迫切需求。这一系列增强措施,使得ByteHouse在舆情分析等高负载场景中表现出色,为用户提供更快、更准确的数据分析体验。ByteHouse的高性能与弹性优势
弹性能力是云原生数据库的关键特性,旨在解决传统存算耦合架构的扩展难题,实现成本可控与性价比提升。云原生数据库通过容器化、存算分离等技术,提供高性能与弹性支持。 在存储层面,ByteHouse采用Serverless模式,基于对象存储构建,实现了低成本无限扩展。计算层面,不同于纯Service方式因单个劣质SQL拖垮整个集群,ByteHouse采取容器化计算策略,确保计算资源无状态或弱状态化,实现秒级弹性伸缩。同时,通过计算组形式提供给用户,每个计算组以租户或应用为单位,确保资源隔离,避免资源争夺,实现应用级的性能保障与资源隔离。 这种设计下,ByteHouse不仅能够提供高性能计算资源的快速调配,还保证了不同租户或应用间的资源独立,有效避免了性能劣化或资源争用,以满足云原生场景下的高并发与多租户需求,实现真正的弹性计算,为用户提供更稳定、更灵活的数据库服务。 ByteHouse通过计划内弹性与即将推出的基于workload的智能动态弹性,实现了资源的快速调整,仅需20多秒即可完成计算资源的伸缩。采用存算分离与容器化技术,重构云原生架构,为用户带来显著收益:- 一是,秒级弹性伸缩能力,确保资源按需分配;
- 二是,成本优化,避免资源闲置浪费;
- 三是,性能保障,通过计算资源隔离,确保应用稳定运行。
- 弹性灵活: 计算资源基于容器化stateless形式,实现秒级弹性伸缩,而存储层面提供无限容量,按需弹性,满足业务需求波动。
- 高性价比: 计算资源随开随用,不使用时自动暂停,无需支付计算费用,避免资源闲置浪费。计算资源的pass化隔离确保单个查询不会导致资源消耗失控,账单可预期,基于CPU资源用量计价,而非扫描数据量,确保成本透明可控。
- 稳定性与性能保障: 租户级、应用级乃至SQL级的资源隔离,确保系统运行的稳定性和服务等级协议(SLA)的持续保障,性能输出稳定,为用户提供高性能与高可靠性的数据库服务。
四个一体化
ByteHouse作为OLAP产品,相当于人体的腰部,是力量汇聚之处,需与上下游系统协同,如数据库、埋点数据、数据湖及AI数据集市等,实现数据的高效流转与处理。为达成这一目标,我们提出了“四个一体化”的理念,旨在无缝整合数据源,无论是传统的数据库系统,还是现代的数据湖或AI驱动的数据集市,ByteHouse都能实现数据的顺畅融合与处理,确保数据的实时性、一致性和可用性,满足企业级数据处理的全面需求。这一能力使得ByteHouse在复杂的企业数据环境中展现出强大的适应性和集成能力,成为数据融合与分析的枢纽。- 第一个一体化,在融合能力方面,实现数据的无缝集成与处理。具体包括:
- 第二个一体化聚焦于“湖仓一体化”,即在数据湖与数据仓库间实现高效读写。业界主流的湖仓构建技术路线分为两类:一是基于对象存储,将文件以开放格式存储,通过Presto等计算引擎进行处理;二是构建在Hadoop上,通过Hive、Hudi、Iceberg等类数据库技术对外提供服务。无论哪种方式,ByteHouse均能提供全面支持。
- 第三个一体化强调的是AP(分析处理)与AI(人工智能)的深度融合。在这一领域,ByteHouse已展开广泛探索与实践,旨在通过AI技术深度优化数据库性能,满足复杂多变的数据处理需求,推动数据库智能化发展。主要体现在两个方向:
- 在“仓市一体化”方面,针对大型公司分析中台的复杂需求,ByteHouse通过Remote功能,实现了多集群间的数据联邦。传统方案下,多集群数据流动问题频出,而ByteHouse的remote技术,允许不同ByteHouse集群,甚至与ClickHouse(CK)之间共享数据,无需物理搬迁,简化了数据管理,提升效率。这一持续迭代与增强的方案,解决了大型企业数据分析中台在数据流动与管理上的难题,提供了更为灵活高效的数据处理能力。
一元化数据,多元化引擎
第四个核心能力,聚焦于全场景分析,旨在规避系统间的不兼容问题,最大化数据效能。我们秉持“一元化数据,多元化引擎”的理念,确保数据效能最大化。ByteHouse的OLAP引擎是基石,经过深度优化,能支持宽表、星型模型、雪花模型等复杂分析需求,即使在泛式化建模中也表现出色。技术亮点包括流批一体、增强型预聚合等,使我们在实时数仓、用户圈选、行为分析、广告推荐等场景下表现优异。 特别介绍的高级分析引擎之一是GIS时空分析,其功能与PostGIS对齐,但性能超越十倍以上,基于ByteHouse强大的OLAP底座,叠加时空分析功能。我们投入大量研发,优化二维空间索引和数据分布,支持PostGIS常用的空间分析函数,确保全面覆盖。在抖音集团内部的电商罗盘业务中,distance和within等关键函数的性能表现显著优于同类产品,为店铺选址、基于位置的营销策略提供强有力支持,展现出卓越性能。 此外,我们还提供图分析引擎,对齐Neo4j功能,支持图算法和图数据库查询语言Cypher,适用于关系网络分析、推荐系统、欺诈检测等场景。在性能上,我们通过优化图数据存储和查询算法,实现了高效图分析能力。 通过这些多元化的高级分析引擎,ByteHouse不仅满足传统OLAP场景需求,还能在时空分析、图分析等复杂场景下,提供卓越的分析能力,助力企业最大化数据价值,提升业务决策效率。 接下来是vector向量检索,ByteHouse比开源的Weaviate更快更强。全文检索方面,比ES更省空间,性能更佳,秘诀在于高压缩比。所有高级引擎都基于SQL,用户上手零成本,只需懂SQL,就能搞定过去复杂的业务分析场景。生态多元化
在OLAP领域,虽百花齐放,却多是存量竞争。我们渴望更多用户尝试ByteHouse,但用户迁移时,最担忧的莫过于改写成本与兼容性挑战。我们的目标是在生态多元化的道路上,实现无缝迁移,无需改写代码,保持开发与分析人员的习惯连续性,换平台不等于从零开始,让工程师们能无缝衔接,继续用他们熟悉的方式工作,无需重新学习新技术或用法,让迁移变得轻松无痛。 具体做法主要是围绕三个生态去进行迭代和提升。 在数据集成生态上,我们与开源主流组件无缝对接,无论是流处理、批处理还是调度工具,均实现良好融合。 在开发生态方面,我们的SQL方言不仅兼容开源社区ClickHouse,更对MySQL生态进行了深度适配,投入大量研发资源,实现全兼容,包括MySQL方言、函数及协议,确保开发者习惯得以延续,免于改写。 在应用生态方面,我们支持社区标准驱动,确保BI工具如火山引擎DataWind、帆软、Tableau、QuickBI、SuperSet 等,无需额外配置即可直接使用。此外,我们的驱动兼容性,让不同平台间的迁移成本接近零,实现真正的无缝对接。最佳实践
接下来介绍一些最佳实践案例。实时数仓的构建,首要追求仍是性能,尤其是高吞吐TPS、低延迟响应、高并发处理,以及实时流的多维计算能力。ByteHouse在数据集成方面,无论采用CDC(Change Data Capture)还是Message Streaming,都能无缝对接主流开源产品,提供性能提升,即使面对极端苛刻的性能要求,我们也有信心提供卓越服务。实时数仓
实时数仓的核心在于实时计算,目前有两种技术实现:仓外计算和仓内计算。- 仓外计算,即基于Flink或Spark Flink构建,ByteHouse支持通过自研的ByteHouse Connector for Flink,实现每秒百万级数据的高效消费与去重入库。此外,Flink的Look Up Join功能可实现表拼接和属性补齐等规则性计算。
- 仓内计算,则利用ByteHouse的物化视图能力,将计算压力转移到OLAP引擎,实现数据链路的轻量化。物化视图支持多表物化、同步刷新和规则异步刷新,适用于复杂流计算和拼接计算,使数据架构链路更简洁高效。