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

Apache Doris 大数据仓库全面解析

这是一个对 Apache Doris 的全面了解指南。结合其官方网站和社区知识,我将从核心概念、架构、特性、应用场景以及快速上手等方面为您进行系统性的解析,另外还补充了Doris的竞争方案。Apache Doris 是一款面向实时分析场景的现代化数据仓库。它能够对海量实时数据进行极速分析。https://doris.apache.org/

Apache Doris

一、Apache Doris 是什么?

Apache Doris 是一个高性能、实时分析型的MPP(大规模并行处理)数据库。它最初由百度开发并开源,名为 Palo,后来捐赠给 Apache 基金会并更名为 Doris。

它的主要目标是解决在线实时报表、即席查询、统一数据仓库构建等场景下的高速数据分析问题。简单来说,它就像一个专为“实时分析”而生的超级引擎,能够在大规模数据集上实现亚秒级的查询响应。

二、核心特性(为什么选择 Doris?)

  1. 极速的查询性能

    • MPP 架构:查询任务被并行分发到集群中的所有节点,充分利用集群的计算和I/O资源。

    • 列式存储:数据按列存储,在查询时只需读取相关列,极大地减少了磁盘I/O。

    • 向量化执行引擎:利用CPU的SIMD指令,一次处理一批数据,而不是一行数据,显著提高了CPU利用率。

    • 预聚合:支持创建基于“物化视图”的Rollup表,预先计算和存储聚合结果,使得查询时可以直接命中预计算好的数据,速度极快。

  2. 易于使用

    • 兼容标准SQL:支持ANSI SQL标准和MySQL协议,用户可以直接使用熟悉的MySQL客户端和BI工具(如Tableau, FineBI, Grafana)连接Doris,学习成本极低。

    • 统一的架构:Doris同时支持离线批处理和实时数据导入,无需维护两套不同的系统(如Hive + HBase)。

    • 简化运维:系统架构简单,只有 FE(前端)和 BE(后端)两种进程,部署和扩容非常方便。

  3. 实时能力

    • 支持多种实时数据导入方式,如 Kafka Routine Load、Flink Connector、MySQL Binlog Load等,可以实现数据毫秒到秒级的延迟。

  4. 丰富的生态系统

    • 可以方便地对接 Hadoop(HDFS, Hive)、Spark、Flink 等大数据组件。

    • 支持多种数据湖分析,如 Iceberg、Hudi 等外部表,可以直接查询数据湖中的数据而无需导入。

  5. 高可用性与可扩展性

    • FE 支持多副本,通过类 Paxos 的 BDB JE 协议实现元数据的高可用和一致性。

    • BE 节点可以水平扩展,增加节点即可线性提升集群的查询和存储能力。

三、架构解析

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

1. Frontend (FE) - 前端节点

  • 职责:负责元数据管理、客户端连接、查询解析与规划。

  • 角色

    • Leader:只有一个,负责元数据的写入和日志同步。

    • Follower:多个,参与选举,提供元数据读取服务。

    • Observer:多个,仅同步元数据,用于扩展读能力,不参与选举。

  • 对外接口:用户通过 MySQL 协议连接到 FE。

2. Backend (BE) - 后端节点

  • 职责:负责数据存储、查询执行。

  • 每个 BE 节点存储一部分数据(表的分片/分区),并执行 FE 下发的查询任务。

  • 数据采用多副本机制,保证高可用。

工作流程简述

  1. 用户通过 MySQL 客户端发送 SQL 到任意一个 FE。

  2. FE 对 SQL 进行解析、语法分析、查询优化,生成分布式执行计划。

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

  4. 各个 BE 节点并行执行,处理本地存储的数据。

  5. FE 收集各个 BE 的中间结果,进行最终聚合。

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

四、典型应用场景

  1. 实时报表与 OLAP 分析

    • 为业务提供实时运营看板、多维分析报表。例如:实时销售大盘、用户行为分析。

  2. 统一数据仓库构建

    • 作为一个中心化的数据仓库,承接来自各业务线(日志、数据库、埋点等)的数据,为上层提供统一的数据查询服务。

  3. 即席查询

    • 数据工程师和分析师可以进行灵活、快速的探索性查询,无需等待长时间的 ETL 过程。

  4. 日志存储与分析

    • 替代传统的 ELK 方案,处理海量日志数据,提供更强大的聚合查询能力和更低的存储成本。

  5. 高维向量分析

    • 最新版本支持了向量索引,可以用于 AI 场景下的快速相似性搜索,如图片、音频检索。

五、数据模型(表类型)

Doris 提供了三种数据模型,以满足不同场景的需求:

  1. Duplicate Key Model(明细模型)

    • 存储最原始的数据,不做任何聚合。适用于需要保留所有明细数据的场景,如日志分析、行为流水。

  2. Aggregate Key Model(聚合模型)

    • 定义 Key 列和 Value 列。相同 Key 列的数据行,其 Value 列会在导入时进行预聚合(如 SUM, MAX, MIN)。适用于报表汇总,可以极大提升查询性能。

  3. Unique Key Model(更新模型)

    • 定义唯一 Key。对于相同 Key 的数据,后导入的数据会覆盖先导入的数据。适用于实时同步变化的业务数据,如订单状态表。

  4. (补充)Duplicate Key Model with Sequence Column

    • 在明细模型基础上,增加了版本列,用于保证数据更新的顺序。

六、快速上手

以下是一个极简的从零开始使用 Doris 的流程:

  1. 部署

    • 参考官网文档,可以通过下载二进制包或使用 Docker 进行单机或集群部署。

  2. 连接

    bash

    # 使用 MySQL 客户端连接,默认端口 9030
    mysql -h FE_HOST -P 9030 -u root
  3. 创建数据库

    sql

    CREATE DATABASE demo;
    USE demo;
  4. 创建表(以聚合模型为例)

    sql

    CREATE TABLE sales (user_id INT,date DATE,city VARCHAR(20),amount BIGINT SUM
    )
    ENGINE=olap
    AGGREGATE KEY(user_id, date, city)
    DISTRIBUTED BY HASH(user_id) BUCKETS 10;

    解释:以 user_iddatecity 为 Key,对 amount 进行 SUM 聚合。数据按 user_id 的哈希值分到 10 个桶中。

  5. 导入数据

    sql

    -- 使用 Stream Load 方式插入数据
    INSERT INTO sales VALUES 
    (1, ‘2023-10-01’, ‘Beijing’, 100),
    (2, ‘2023-10-01’, ‘Shanghai’, 200);
  6. 查询

    sql

    -- 查询每个城市的总销售额
    SELECT city, SUM(amount) AS total_sales 
    FROM sales 
    GROUP BY city;

七、总结:优势与考量

优势

  • 性能卓越:在多数场景下,查询速度比 Hive, Presto, Kylin 等更快。

  • 运维简单:架构清晰,组件少,大大降低了运维负担。

  • 生态友好:兼容 MySQL 协议,与大数据生态无缝集成。

  • 功能全面:集实时、离线、数据湖分析于一体。

考量/适用边界

  • 对于超大规模的离线 ETL 作业,Hive/Spark on Hadoop 生态的批处理成本可能更低。

  • 作为OLTP(高并发事务处理) 数据库的替代品是不合适的,它专为分析型查询设计。

  • 社区相对年轻,虽然发展迅速,但企业级功能和支持可能不如一些老牌商业数据仓库成熟。

总而言之,Apache Doris 是现代大数据架构中,作为实时分析层和统一数据仓库的一个非常出色和受欢迎的选择。 如果您正在寻找一个能够提供快速查询、易于运维且支持实时数据摄入的分析型数据库,Doris 绝对值得您深入评估。建议访问其官网 https://doris.apache.org/ 和 GitHub 仓库以获取最新信息。

Apache Doris衍生方案

Apache Doris 本身是一个非常优秀的项目,而基于它的衍生方案也极大地丰富和推动了整个生态的发展。

最核心的衍生方案就是 StarRocks,它和 Doris 同根同源,可以看作是最主要的“分支”。此外,还有一些基于 Doris/StarRocks 的商业化产品。

下面我们来详细梳理一下:

一、核心衍生方案:StarRocks

StarRocks(原名 Palo,后来改名为 Doris,然后从这个分支出来叫 StarRocks)是 Apache Doris 最著名、也是最强大的一个衍生分支。

1. 渊源与关系
  • 同根同源:StarRocks 和 Apache Doris 都起源于百度开源的 Palo 项目。

  • 分支发展:在 Palo 捐给 Apache 基金会并成为 Apache Doris 后,原核心开发团队的大部分成员成立了公司(鼎石科技),并基于某个版本的 Doris 代码库进行了独立、激进的发展和迭代,这个新的分支就是 StarRocks。

  • 现状:目前,StarRocks 和 Apache Doris 是两个独立的开源项目,各自发展,但在功能和理念上仍有诸多相似之处,可以看作是“兄弟”项目。

2. StarRocks 的核心特点与差异化优势(相较于 Apache Doris)

StarRocks 的目标是打造一个更极致性能的新一代极速全场景MPP数据库。它的许多创新特性也反过来影响了 Doris 社区的发展。

  • 更先进的查询优化器

    • CBO(成本优化器):StarRocks 很早就自研了全新的、基于 Cascades 框架的CBO,对复杂查询(尤其是多表关联)的优化能力非常强。

    • Apache Doris 在较新的版本(如 1.2.0 之后)也推出了自研的全新 CBO,两者在这一领域的差距正在缩小。

  • 原生向量化执行引擎

    • StarRocks 从设计之初就全面采用了向量化执行引擎,并将其作为默认配置。

    • Apache Doris 的向量化引擎在较晚的版本中才逐步完善并默认开启。

  • 数据湖分析能力

    • StarRocks 在很早就大力投入了对数据湖分析的支持,可以高效地直接查询 Apache Hive、Iceberg、Hudi、Delta Lake 以及 MySQL、Elasticsearch 等外部数据源,其性能表现非常出色。

    • Apache Doris 也具备类似的能力,但 StarRocks 在这一领域投入更早,生态集成和性能优化在部分场景下可能更成熟。

  • 物化视图

    • StarRocks 提供了更强大和智能的异步物化视图,可以跨表构建,并支持查询的自动路由(查询时可以自动匹配到最优的物化视图,无需修改SQL)。

    • Apache Doris 的物化视图(Rollup)主要是同步的、基于单个表的,在灵活性和自动化程度上相对较弱,但其在单表预聚合场景下非常高效。

  • 更丰富的表类型

    • 除了 Doris 支持的明细、聚合、更新模型外,StarRocks 还推出了 主键模型,通过部分列更新、内存索引+磁盘存储的方式,更好地支持实时更新和点查询场景。

3. 如何选择 StarRocks 还是 Apache Doris?
  • 选择 StarRocks 的情况

    • 业务场景非常复杂,有大量的多表关联查询

    • 非常看重数据湖分析能力,希望一个引擎直接查询湖和仓的数据。

    • 需要更强大和灵活的物化视图来加速查询。

    • 极致的查询性能有最高要求,愿意尝试更激进的技术迭代。

  • 选择 Apache Doris 的情况

    • 更看重社区的稳定性和可预测性。作为 Apache 顶级项目,其发布流程和社区治理非常规范。

    • 业务场景以单表聚合分析实时报表为主,Doris 的 Rollup 模型在此场景下简单高效。

    • 技术栈偏向于与 Hadoop 生态 紧密集成。

    • 对 Apache 品牌和其背后的开源治理模式有偏好。


二、其他衍生方案与商业产品

1. SelectDB
  • 是什么:SelectDB 是一家商业化公司,其核心产品 SelectDB Cloud 是一个基于 Apache Doris 构建的云原生实时数据仓库服务。

  • 与 Doris 的关系:SelectDB 由 Apache Doris 项目的核心贡献者和初创成员创立,是 Doris 社区的积极维护者和推动者。你可以把它理解为 Doris 的 “官方”商业版和云服务版

  • 核心价值

    • 全托管服务:用户无需关心集群部署、运维、扩缩容等问题。

    • 云原生架构:充分利用云上弹性、存储计算分离等优势,降低成本。

    • 企业级功能:提供更好的监控、安全、多租户等企业级特性。

    • 专业支持:提供商业技术支持。

类比:SelectDB 与 Apache Doris 的关系,类似于 Confluent 与 Apache Kafka,或者 Databricks 与 Apache Spark 的关系。

2. 其他商业发行版

一些云厂商或大数据公司也会基于 Apache Doris 或 StarRocks 制作自己的商业发行版或集成方案,通常会包含一些定制化的功能、管理控制台和专业技术支持。


总结与对比

为了更直观,我们可以用一个表格来总结:

特性/项目Apache DorisStarRocksSelectDB
项目性质Apache 开源社区项目独立开源项目商业公司 & 云服务
核心定位高性能、易用的实时数据仓库极速全场景 MPP 数据库基于 Doris 的云原生实时数据仓库
技术渊源源于百度 Palo,Apache 项目源于早期 Doris 分支,独立发展基于 Apache Doris 构建
主要优势架构简单、运维友好、社区稳定、Apache生态查询优化器强大、向量化引擎成熟、数据湖分析能力强全托管、云原生、企业级功能、专业支持
适用场景实时报表、即席查询、统一数仓复杂即席查询、数据湖分析、高性能OLAP希望免运维、快速上云、需要企业级服务的企业
选择考量社区、稳定性、Hadoop生态集成极致性能、复杂查询、数据湖分析云服务、免运维、商业支持

结论

  1. StarRocks 是 Apache Doris 最强有力的“竞争者”和“同行者”,两者在技术上相互促进,共同推动了 MPP OLAP 数据库领域的进步。

  2. SelectDB 是 Apache Doris 在商业化云服务道路上的重要延伸,为不想自行运维集群的用户提供了绝佳选择。

  3. 对于技术选型而言:

    • 如果您的团队技术实力强,希望深度掌控并参与社区,Apache Doris 是一个稳健的选择。

    • 如果您的业务对复杂查询性能和数据湖分析有极高要求,StarRocks 值得优先评估。

    • 如果您的企业希望快速在云上构建实时数据平台,且不愿投入运维成本,SelectDB Cloud 是最省心的方案。

建议在实际选型时,用自身的业务数据和查询场景同时对 Apache Doris 和 StarRocks 进行 PoC(概念验证)测试,以数据说话,选择最适合自己的方案。

http://www.dtcms.com/a/422418.html

相关文章:

  • Spring Cloud RabbitMQ 详解:从基础概念到秒杀实战
  • 软件开发和网站建设做网站app需要多少钱
  • 聊天软件开发用什么技术萧山市seo关键词排名
  • 租好服务器咋做网站呢可以做音基题的音乐网站
  • 江苏省 建设 注册中心网站外贸 模板网站 定制网站
  • 网站开发优惠活动方案小松建设官方网站
  • 北京网站建设公司艺唯思热搜榜百度一下你就知道
  • 八戒网站做推广虚拟主机手机网站
  • 东营网站建设价钱表合肥百度团购网站建设
  • 职高网站建设知识点图片加字制作免费
  • 响应式自适应织梦网站模板汕头自助建站
  • 正规网站优化推广口碑营销图片
  • 建设网站多少钱 2017网站收录不好的原因
  • mysql数据库做网站免费个人网站
  • 什么是门户网站?静态网页制作成品
  • 石家庄网站推广报价营销网站排行榜前十名
  • 设计网站公司名称淘宝指数查询官网手机版
  • 建设银行的网站为什么登不上相城苏州网站建设
  • 厦门网站建设哪家比较好wordpress删除dux头部标签
  • 网站数据分析怎么做汅app下载大全2022
  • 顺德高端网站机关网站建设建议
  • 百度网站检测中国建设监理协会网站查询成绩
  • 好的网站或网页国外网站推荐
  • 做婚恋网站代理商挣钱吗关于网站建设的技巧
  • 太原哪里做网站好考证培训机构报名网站
  • 网站开发html5企业oa系统价格
  • 招网站开发人员软件技术特点
  • 第二课强登陆网站新型智库建设的意见网页设计制作导航栏
  • 论述网站建设流程公司ppt简介模板
  • 怎么看网站有没有做百度推广动漫网页设计作品欣赏