Doris 架构原理及核心特性详解

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: Doris 是百度内部孵化的OLAP项目,现已开源并广泛应用。它采用MPP架构、向量化执行引擎和列存储技术,提供高性能、易用性和实时数据处理能力。系统由FE(管理节点)和BE(计算与存储节点)组成,支持水平扩展和高可用性。Doris 适用于海量数据分析,尤其在电商、游戏等行业表现出色,但资源消耗较大,复杂查询优化有局限性,生态集成度有待提高。

一、Doris 前世今生

Doris 最初是百度内部的一个 OLAP(Online Analytical Processing)项目,旨在解决海量数据分析场景下的性能与易用性问题。经过多年的打磨和优化,逐渐开源并在社区中得到了广泛的关注和应用。它在大数据领域迅速崭露头角,为企业提供了高效、灵活的数据洞察能力。

二、Doris 采用的技术

  1. MPP(Massively Parallel Processing)架构:Doris 基于 MPP 架构构建,能够将数据和计算任务分布到多个节点上并行处理。这使得它可以充分利用集群的计算资源,大大提升查询处理的效率,应对大规模数据集的复杂分析需求。
  2. 向量化执行引擎:采用向量化执行技术,以批量数据处理代替传统的行式处理方式。通过减少函数调用开销、提高 CPU 缓存命中率等方式,显著提升了数据处理的速度,尤其在处理复杂查询时优势明显。
  3. 列存储:数据以列的形式存储,这对于 OLAP 场景非常友好。因为在分析查询中,通常只需要读取部分列的数据。列存储减少了 I/O 开销,同时有利于数据的压缩,进一步提高存储效率和查询性能。

三、Doris 的架构原理

Doris 的架构主要由 FE(Frontend)和 BE(Backend)两部分组成。

  1. FE(Frontend)
  • 核心功能:FE 是整个系统的管理节点和查询入口。它负责接收用户的 SQL 请求,进行语法解析、语义分析、查询优化,并生成执行计划。同时,FE 还管理着整个集群的元数据,包括表结构、分区信息、用户权限等。
  • 高可用性:FE 节点可以部署多个,通过选举机制产生一个主节点(Leader)和多个从节点(Follower)。主节点负责处理写操作和元数据的变更,从节点负责同步主节点的元数据,并处理读请求。当主节点出现故障时,从节点会自动选举出新的主节点,确保系统的高可用性。
  1. BE(Backend)
  • 数据存储与计算:BE 节点负责实际的数据存储和计算任务。每个 BE 节点都存储了一部分数据,当接收到 FE 分发的执行计划后,BE 节点会并行执行计算任务,并将结果返回给 FE。BE 节点之间通过高速网络进行数据传输和协作,共同完成复杂的查询操作。
  • 弹性扩展:可以根据业务需求动态添加或删除 BE 节点。当添加新的 BE 节点时,Doris 会自动进行数据的均衡分布,确保各个节点的负载均衡。同样,当删除 BE 节点时,数据也会自动迁移到其他节点,保证数据的完整性和可用性。

四、FE 元数据管理

  1. 元数据存储:FE 将元数据存储在一个基于 Raft 协议的分布式存储系统中。Raft 协议保证了元数据的一致性和高可用性。所有的元数据变更操作都需要经过 Raft 协议的一致性算法,确保在多个 FE 节点之间数据的一致性。
  2. 元数据更新流程:当用户执行创建表、修改表结构、授权等操作时,这些请求会首先发送到 FE 主节点。主节点将元数据变更操作记录到 Raft 日志中,并将日志同步给从节点。当大多数从节点确认接收到日志后,主节点会应用这些变更到本地的元数据存储中,并通知从节点也进行相应的更新。这样就保证了所有 FE 节点上的元数据始终保持一致。

五、Doris 数据组织

  1. 表结构:Doris 支持多种表结构,包括明细表、聚合表和更新表。明细表按照原始数据的格式存储,适合需要保留完整数据细节的场景;聚合表则是对原始数据进行预聚合处理,存储聚合后的结果,能够大大提高查询性能,适用于查询模式较为固定的场景;更新表则针对数据频繁更新的场景进行了优化,支持高效的行级更新操作。
  2. 分区与分桶:为了进一步提高数据管理和查询效率,Doris 支持数据分区和分桶。分区可以按照时间、地域等维度将数据划分为不同的逻辑单元,查询时可以只扫描相关的分区,减少数据扫描范围。分桶则是将数据按照某个字段的哈希值分配到不同的桶中,有利于数据的并行处理和 JOIN 操作的优化。

六、Doris 的核心特性

  1. 高性能:通过 MPP 架构、向量化执行引擎、列存储等技术的结合,Doris 在处理海量数据的复杂查询时能够提供极高的性能。在电商行业的一家大型企业中,其拥有数亿条订单记录,每天需要对这些数据进行多维度的分析,如按地区、时间、商品类别统计销售额等。以往使用传统数据库进行此类分析,查询一次往往需要数小时甚至更长时间。引入 Doris 后,借助其强大的并行处理能力和高效的存储方式,同样的查询可以在几分钟内完成,查询性能提升了数十倍,大大提高了数据分析的效率,为企业决策提供了更及时的支持 。
  2. 易用性:Doris 提供了标准的 SQL 接口,对于熟悉 SQL 的用户来说,几乎可以零学习成本上手。同时,它的部署和管理相对简单,通过一些简单的配置即可搭建起一个高效的数据分析集群。例如,某初创企业的数据分析团队规模较小,技术能力有限。在搭建数据分析平台时,选择了 Doris。团队成员凭借已有的 SQL 知识,能够快速编写查询语句进行数据探索。并且,通过简单的服务器配置和 Doris 的安装部署,短时间内就搭建起了满足日常分析需求的集群,快速实现了对业务数据的分析洞察,为企业的业务发展提供了有力的数据支撑。
  3. 实时性:支持实时数据摄入和查询。用户可以通过多种方式将实时产生的数据快速导入到 Doris 中,并立即进行查询分析,满足对实时性要求较高的业务场景,如实时报表、实时监控等。以一家在线游戏公司为例,游戏运营过程中会实时产生大量的玩家行为数据,如登录、游戏时长、付费等信息。通过将这些数据实时导入 Doris,运营团队可以实时查看玩家活跃度、付费转化率等关键指标,一旦发现数据异常,能够及时采取措施进行调整优化,有效提升了游戏的运营效果和用户体验。
  4. 高扩展性:无论是 FE 节点还是 BE 节点,都可以轻松地进行水平扩展。这使得 Doris 可以根据业务数据量的增长和查询负载的增加,灵活地扩展集群规模,保证系统的性能和可用性。一家社交媒体公司,随着用户数量的快速增长,其数据量呈爆发式增长,每日产生的数据量从 TB 级迅速增长到 PB 级。原有的 Doris 集群在处理查询时开始出现性能瓶颈。通过简单地添加 BE 节点,Doris 自动进行数据的均衡分布,集群性能得到了显著提升,轻松应对了数据量的增长,确保了数据分析和报表生成的高效性,满足了业务不断发展的需求。

七、Doris 的架构分析

  1. 优点
  • 强大的并行处理能力:MPP 架构使得 Doris 能够充分利用集群资源,实现大规模数据的并行处理,有效提升查询性能。
  • 良好的扩展性:水平扩展的能力使得 Doris 可以轻松应对数据量和查询负载的增长,无需复杂的架构调整。
  • 数据一致性保障:通过 Raft 协议保证了 FE 节点之间元数据的一致性,确保了系统的稳定性和可靠性。
  1. 缺点
  • 资源消耗较大:由于采用了大量的并行处理和复杂的优化技术,Doris 在运行过程中对硬件资源(如 CPU、内存、磁盘 I/O 等)的消耗相对较大。在一些资源受限的环境中,可能会影响系统的性能表现。
  • 复杂查询优化的局限性:虽然 Doris 的查询优化器能够处理大部分常见的查询场景,但对于一些非常复杂的查询,优化效果可能不尽如人意。尤其是涉及到多个表的复杂 JOIN 操作和嵌套子查询时,可能需要用户手动进行一些优化调整。
  • 生态集成度有待提高:相比一些成熟的大数据平台,Doris 在与其他生态系统组件(如 Hive、Spark 等)的集成方面还存在一定的局限性。在一些需要多平台协同工作的场景中,可能需要额外的开发和配置工作。
相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
2月前
|
存储 BI Shell
Doris基础-架构、数据模型、数据划分
Apache Doris 是一款高性能、实时分析型数据库,基于MPP架构,支持高并发查询与复杂分析。其前身是百度的Palo项目,现为Apache顶级项目。Doris适用于报表分析、数据仓库构建、日志检索等场景,具备存算一体与存算分离两种架构,灵活适应不同业务需求。它提供主键、明细和聚合三种数据模型,便于高效处理更新、存储与统计汇总操作,广泛应用于大数据分析领域。
359 2
|
2月前
|
存储 监控 算法
园区导航系统技术架构实现与原理解构
本文聚焦园区导航场景中室内外定位精度不足、车辆调度路径规划低效、数据孤岛难以支撑决策等技术痛点,从架构设计到技术原理,对该系统从定位到数据中台进行技术拆解。
99 0
园区导航系统技术架构实现与原理解构
|
3月前
|
存储 消息中间件 canal
zk基础—2.架构原理和使用场景
ZooKeeper(ZK)是一个分布式协调服务,广泛应用于分布式系统中。它提供了分布式锁、元数据管理、Master选举及分布式协调等功能,适用于如Kafka、HDFS、Canal等开源分布式系统。ZK集群采用主从架构,具有顺序一致性、高性能、高可用和高并发等特点。其核心机制包括ZAB协议(保证数据一致性)、Watcher监听回调机制(实现通知功能)、以及基于临时顺序节点的分布式锁实现。ZK适合小规模集群部署,主要用于读多写少的场景。
|
4月前
|
存储 人工智能 自然语言处理
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
本文深入探讨了混合专家(MoE)架构在大型语言模型中的应用与技术原理。MoE通过稀疏激活机制,在保持模型高效性的同时实现参数规模的大幅扩展,已成为LLM发展的关键趋势。文章分析了MoE的核心组件,包括专家网络与路由机制,并对比了密集与稀疏MoE的特点。同时,详细介绍了Mixtral、Grok、DBRX和DeepSeek等代表性模型的技术特点及创新。MoE不仅解决了传统模型扩展成本高昂的问题,还展现出专业化与适应性强的优势,未来有望推动AI工具更广泛的应用。
1665 4
为什么混合专家模型(MoE)如此高效:从架构原理到技术实现全解析
|
4月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
133 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
5月前
|
消息中间件 存储 设计模式
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
1443 21
RocketMQ原理—5.高可用+高并发+高性能架构
|
4月前
|
Java 开发者 Spring
Spring框架 - 深度揭秘Spring框架的基础架构与工作原理
所以,当你进入这个Spring的世界,看似一片混乱,但细看之下,你会发现这里有个牢固的结构支撑,一切皆有可能。不论你要建设的是一座宏大的城堡,还是个小巧的花园,只要你的工具箱里有Spring,你就能轻松搞定。
191 9
|
5月前
|
SQL 分布式数据库 Apache
网易游戏 x Apache Doris:湖仓一体架构演进之路
网易游戏 Apache Doris 集群超 20 个 ,总节点数百个,已对接内部 200+ 项目,日均查询量超过 1500 万,总存储数据量 PB 级别。
445 3
网易游戏 x Apache Doris:湖仓一体架构演进之路
|
5月前
|
人工智能 自然语言处理 安全
基于LlamaIndex实现CodeAct Agent:代码执行工作流的技术架构与原理
CodeAct是一种先进的AI辅助系统范式,深度融合自然语言处理与代码执行能力。通过自定义代码执行代理,开发者可精准控制代码生成、执行及管理流程。本文基于LlamaIndex框架构建CodeAct Agent,解析其技术架构,包括代码执行环境、工作流定义系统、提示工程机制和状态管理系统。同时探讨安全性考量及应用场景,如软件开发、数据科学和教育领域。未来发展方向涵盖更精细的代码生成、多语言支持及更强的安全隔离机制,推动AI辅助编程边界拓展。
259 3
基于LlamaIndex实现CodeAct Agent:代码执行工作流的技术架构与原理