当前位置: 首页 > news >正文

大数据框架Doris全面解析

Apache Doris 简介 - Apache Doris

好的,我们来全面、系统地了解一下大数据框架 Apache Doris

Apache Doris(之前也叫百度 Palo)是一个基于 MPP(大规模并行处理)架构的高性能、实时的分析型数据库。它主要面向在线分析处理(OLAP)场景,能够以亚秒级的响应时间对海量数据进行多维分析和即席查询。


一、Doris 的核心定位与特点

Doris 的设计目标是为用户提供一个单一、统一的分析数据库,以替代传统复杂的“Hadoop + 多个组件(如 Hive, HBase, Presto/Trino, Kylin)”的大数据技术栈。其核心特点包括:

  1. 极致的性能

    • 基于 MPP 架构,并行计算,充分利用集群资源。

    • 列式存储,高效压缩,减少 I/O 开销。

    • 预聚合(物化视图),对于常用聚合查询,速度极快。

    • 向量化执行引擎,充分利用 CPU 缓存和指令集。

  2. 易用性与便利性

    • 兼容 MySQL 协议:用户可以使用标准的 SQL 和常见的 MySQL 客户端(如 mysql cli, JDBC, ODBC)直接连接 Doris,学习成本极低。

    • 简化架构:系统只有两个核心组件:Frontend (FE) 和 Backend (BE),部署和运维非常简单。

    • 支持标准 SQL:支持 ANSI SQL 2003 标准,包括丰富的函数、窗口函数、CTE(公共表表达式)等。

  3. 实时分析

    • 支持实时数据导入,可以通过多种方式(如 Stream Load, Routine Load, Insert)将数据毫秒级到分钟级地导入 Doris,并立即用于分析。

    • 支持更新(Unique 模型)和删除操作,可实现“读时更新”或“写时更新”,满足实时数仓中对数据更新的需求。

  4. 高可用性与可扩展性

    • 采用分布式架构,FE 和 BE 都可以水平扩展。

    • 多 FE 副本通过类 Raft 协议实现元数据的高可用和一致性。

    • 数据多副本存储,自动恢复,保证数据可靠性。


二、核心架构:FE 与 BE

Doris 的架构非常简洁,主要由两类进程组成:

组件角色功能
Frontend (FE)管理节点1. 元数据管理:存储和维护表结构、分区、副本等信息。
2. 查询协调:接收客户端请求,解析 SQL,生成查询计划,并将计划分发到 BE 执行,然后聚合结果。
3. 集群管理:管理 BE 节点的上下线。
Backend (BE)计算与存储节点1. 数据存储:负责存储表中的数据(按列存储)。
2. 查询执行:执行 FE 下发的查询计划片段,进行本地计算。
3. 数据复制:保证数据的多副本一致性。

工作流程

  1. 用户通过 MySQL 客户端向 FE 发送 SQL 请求。

  2. FE 解析 SQL,进行元数据校验、权限验证、查询优化,生成分布式执行计划。

  3. FE 将执行计划分发给相关的多个 BE 节点。

  4. 每个 BE 节点并行执行本地计算(扫描数据、过滤、聚合等)。

  5. BE 将中间结果返回给 FE(或直接由某个 BE 进行结果汇聚)。

  6. FE 将最终结果返回给客户端。

这种架构分离了管理职责和计算存储职责,清晰且易于扩展。


三、数据模型与表设计

Doris 提供了灵活的数据模型,在表创建时通过 DUPLICATE KEYUNIQUE KEYAGGREGATE KEY 来定义,以适应不同场景。

模型关键字适用场景说明
明细模型DUPLICATE KEY(...)日志分析、用户行为分析存储最原始的明细数据,即使完全重复的两行数据也会保留。适合 Ad-hoc 查询,任意维度的筛选。
聚合模型AGGREGATE KEY(...)报表、可视化导入阶段就进行预聚合。例如,定义 SUM(v1), COUNT(v2),后续查询时直接取结果,极大提升查询性能。
更新模型UNIQUE KEY(...)订单状态变更、用户资料更新针对需要更新的场景。相同 Key 的数据只会保留最新版本,实现了“读时更新”。
主键模型PRIMARY KEY(...)实时更新频繁的场景2.0版本引入,支持高效的 UPSERT 和 DELETE 操作,提供了更极致的实时更新性能。

分区与分桶

  • 分区(Partitioning):通常按日期分区(如按天),便于数据管理(删除旧数据)、查询时剪枝。

  • 分桶(Bucketing):在一个分区内,数据被哈希分布到多个 Tablet(数据分片)中。Tablet 是数据移动、复制和计算的最小单元。合理的分桶能保证数据均匀分布,充分利用并行计算。


四、与其他OLAP引擎的对比

特性Apache DorisClickHouseApache StarRocksPresto/Trino
架构复杂度极简 (FE/BE)简单极简 (FE/BE,由Doris分支而来)中等 (Coordinator/Worker)
易用性极高 (MySQL协议,标准SQL)中等(自定义SQL方言,配置复杂)极高(同Doris)高(标准SQL)
实时能力(支持更新,多种导入方式)强(但更新能力较弱)极强(优化了Doris的更新模型)弱(依赖外部存储,如Hive, Kafka)
查询性能非常快(尤其多表关联)极快(单表查询世界领先)极快(在Doris基础上进一步优化)快(但受连接器性能影响)
生态集成良好(支持HDFS/S3, Hive, Iceberg等)一般良好(同Doris,并更积极)极好(连接器生态丰富)
适用场景实时数仓、报表、Ad-hoc查询单表极速分析、用户行为日志对性能和实时性要求更高的场景联邦查询、跨数据源分析

:Apache Doris 和 StarRocks 同源,后者是前者的一个分支,并进行了大量深度优化,两者在很多方面非常相似。目前 StarRocks 在社区活跃度和性能优化上更为激进。


五、典型应用场景

  1. 实时数据仓库:替代传统的 T+1 数仓,实现分钟级甚至秒级的数据分析和报表呈现。

  2. 用户行为分析:支持对海量用户点击流、浏览记录等进行快速的多维度、即席查询。

  3. 日志分析与监控:替代 ELK 中的 Elasticsearch 进行更复杂的聚合查询和分析。

  4. 统一查询层:通过对 Hive、Iceberg、Hudi 等外部表的支持,作为统一的查询入口,简化数据架构。

总结

Apache Doris 的核心优势在于其“全能”和“易用”。它不像 ClickHouse 在单表查询上做到极致但牺牲了易用性和关联查询,也不像 Presto 只做计算引擎而需要依赖外部存储。

它提供了一个 开箱即用、性能卓越、支持实时更新、兼容MySQL协议 的一站式解决方案,特别适合希望构建实时数仓、但又希望技术栈尽可能简单、运维成本低的团队。对于从 MySQL 等传统数据库转型过来的团队来说,Doris 的学习和迁移成本非常低,是其进入大数据分析领域的一个绝佳选择。

http://www.xdnf.cn/news/1458955.html

相关文章:

  • 期权平仓后权利金去哪了?
  • 基于STM32的智能家居语音控制系统设计
  • Pycharm终端pip install的包都在C:\Users\\AppData\Roaming\Python\解决办法
  • 手写Spring框架
  • 前端跨域终极指南:3 种优雅解决方案 + 可运行 Demo
  • 解密注意力机制:为何它能在Transformer中实现高效并行计算?
  • STM32G4 速度环开环,电流环闭环 IF模式建模
  • 如何在Linux上部署1Panel面板并远程访问内网Web端管理界面
  • Kafka 开启 SASL_PLAINTEXT 双监听器认证(内网/外网)
  • 如何减少文档冗余和重复劳动
  • vite_react 插件 find_code 最终版本
  • MVCC是如何工作的?
  • bash自带的切片操作
  • 解锁“桐果云”的全链路能力矩阵,技术人必看的企业级数据应用方案
  • 阿里云轻量应用服务器部署WordPress与配置SSL 证书
  • 英飞凌ASIL-D级无刷电机驱动芯片TLE9189守护汽车安全
  • 第三方网站测试:WEB安全测试中DOM型XSS漏洞的检测
  • [Windows] PDF工具箱 PDF24 Creator 11.28.0
  • 为什么ApiFox的分页查询的返回Vo的数据没有全部展示? 只展示了返回有数据的?没有数据的为什么不展示?
  • N个代码片段之封装继承与多态
  • Docker(①安装)
  • 视频小浮窗Pip的实现
  • 【RNN-LSTM-GRU】第四篇 GRU门控循环单元:LSTM的高效替代者与实战指南
  • 力扣14:最长公共前缀
  • 【系统架构设计(14)】项目管理下:软件质量与配置管理:构建可靠软件的基础保障
  • 出海马来西亚,九识智能携手ALS共同启动首个自动驾驶物流车公开道路试运行
  • 详细讲解pyspark中dsl格式进行大数据开发中的的所有编程情况
  • PCB中的CAF深度剖析与对策研究
  • 【109】基于51单片机自动感应迎宾门【Proteus仿真+Keil程序+报告+原理图】
  • 【数学建模学习笔记】机器学习分类:KNN分类