大数据基础:Doris重点架构原理

文章目录

Doris重点架构原理

一、Apache Doris介绍

二、Apache Doris使用场景

三、Apache Doris架构原理

四、Apache Doris 特点


Doris重点架构原理

一、Apache Doris介绍

基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以 支持高并发的点查询场景,也能支持高吞吐的复杂分析场景

二、Apache Doris使用场景

  • 报表分析

  • 即席查询(Ad-hoc Query)

  • 统一数仓构建

  • 数据湖联邦查询

三、Apache Doris架构原理

Doris 架构非常简单,只有两类进程FE和BE,这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大的降低了一款分布式系统的运维成本。

  • Frontend(FE) : 主要负责用户请求的接入、查询解析规划、元数据的存储、节点管理相关工作。

FE又分为 Leader、Follwer和Observer三种角色 ,默认一个Doris集群中只能有一个Leader,可以有多个Follwer和Observer。其中Leader和Follwer组成一个Paxos选择组,如果Leader宕机,则剩下的Follower会自动选出新的Leader,保证单节点宕机情况下元数据的高可用及数据写入高可用。

Observer用来扩展查询节点、同步Leader元数据进行备份,如果Doris集群压力非常大,可以扩展Observer节点来提高集群查询能力,Observer不参与选举、数据写入,只参与数据读取。

  • Backend(BE) :一个用户请求通过FE解析、规划后,具体的执行计划会发送给BE具体执行,BE主要负责数据存储、查询计划的执行。

BE分布式的存储Doris table表数据,table表数据会经过分区分桶形成tablet,tablet采用列式存储,默认有3个副本。BE会接收FE命令来创建、查询、删除table表,接收来自FE的执行计划并分布式执行。BE会通过索引和谓词下推快速过滤数据,可以在后台执行Compact任务,减少查询时的读放大。

  • Broker(可选):

Apache Doris架构中除了有BE和FE进程之外,还可以部署Broker可选进程,主要用于支持Doris读写远端存储上的文件和目录。例如:Apache HDFS 、阿里云OSS、亚马逊S3等。

Broker 通过提供一个 RPC 服务端口来提供服务,是一个无状态的 Java 进程,负责为远端存储的读写操作封装一些类 POSIX 的文件操作,如 open,pread,pwrite 等等。除此之外,Broker 不记录任何其他信息,所以包括远端存储的连接信息、文件信息、权限信息等等,都需要通过参数在 RPC 调用中传递给 Broker 进程,才能使得 Broker 能够正确读写文件。Broker 仅作为一个数据通路,并不参与任何计算,因此仅需占用较少的内存。通常一个 Doris 系统中会部署一个或多个 Broker 进程。

四、Apache Doris 特点

  • 支持标准SQL接口

  • 列式存储引擎

  • 支持丰富的索引结构

  • 支持多种存储模型

  • 支持物化视图

  • MPP架构设计

  • 支持向量化查询引擎

  • 动态调整执行计划

  • 采用CBO和RBO 查询优化器


  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉

  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

相关推荐

  1. 数据Doris 数仓使用规范原则

    2024-07-17 18:52:06       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 18:52:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 18:52:06       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 18:52:06       58 阅读
  4. Python语言-面向对象

    2024-07-17 18:52:06       69 阅读

热门阅读

  1. 如何规避苹果开发者账户关联

    2024-07-17 18:52:06       22 阅读
  2. golang笔记-流程控制

    2024-07-17 18:52:06       20 阅读
  3. js数组去重(4种方法)

    2024-07-17 18:52:06       19 阅读
  4. Python列表基础与高级应用详解

    2024-07-17 18:52:06       24 阅读
  5. 构建可扩展的淘客返利系统架构设计与实现

    2024-07-17 18:52:06       24 阅读
  6. 神经网络类型

    2024-07-17 18:52:06       23 阅读
  7. ArduPilot开源代码之AP_DAL_GPS

    2024-07-17 18:52:06       20 阅读
  8. 江苏服务器租用:算力服务器适用于哪些场景?

    2024-07-17 18:52:06       19 阅读
  9. C语言求阶乘

    2024-07-17 18:52:06       19 阅读
  10. 力扣每日一题:2956. 找到两个数组中的公共元素

    2024-07-17 18:52:06       26 阅读
  11. 星月工作室信息组团队/XYOI

    2024-07-17 18:52:06       27 阅读
  12. EXIT_SUCCESS、EXIT_FAILURE、return的区别和用法

    2024-07-17 18:52:06       21 阅读