详解doris基础
- doris is a data warehouse for real-time analytics
- lightning-fast analytics on real-time data at scale
Doris使用场景
-
实时数据分析:
- 实时报告与决策:Doris 提供实时更新的报告和仪表板,供企业内部和外部使用,支持自动化流程中的实时决策。
- 即席分析:Doris 具备多维数据分析能力,可实现快速的商业智能分析和即席查询,帮助用户从复杂数据中迅速挖掘洞见。
- 用户画像与行为分析:Doris 能够分析用户的参与度、留存率、转化率等行为,同时支持人群洞察、人群筛选等行为分析场景。
-
湖仓一体分析:
- 湖仓查询加速:Doris 凭借高效的查询引擎,实现湖仓数据查询加速。
- 联邦分析:Doris 支持跨多数据源的联邦查询,简化架构并消除数据孤岛。
- 实时数据处理:Doris 融合实时数据流与批处理数据能力,满足高并发、低延迟的复杂业务需求。
-
基于 SQL 的可观测性:
- 日志与事件分析:Doris 能够对分布式系统中的日志和事件进行实时或批量分析,助力问题定位与性能优化。
Doris整体架构
-
Apache Doris 使用 MySQL 协议,高度兼容 MySQL 语法,并支持标准 SQL。用户可以通过各种客户端工具访问 Apache Doris,它还能与商业智能(BI)工具无缝集成。
-
存算一体架构,由2部分构成:
-
前端(FE):主要负责处理用户请求、查询解析与规划、元数据管理以及节点管理任务。
-
后端(BE):主要负责数据存储和查询执行。数据被分区成多个分片,并在 BE 节点上以多个副本的形式存储。
-
前端节点由三个角色组成:
Role | Function |
---|---|
Master | FE 主节点负责元数据的读写操作。当主节点中的元数据发生变更时,会通过 BDB JE 协议同步到从节点(Follower)或观察者节点(Observer |
Follower | 从节点负责元数据的读取。如果主节点发生故障,可从从节点中选举出新的主节点。 |
Observer | 观察者节点负责元数据的读取,主要用于提高查询并发能力,不参与集群的主节点选举。 |
Doris核心特性
-
高可用性:在 Apache Doris 中,元数据和数据均以多副本形式存储,通过 quorum 协议同步数据日志。只有当大多数副本完成写入后,数据写入才被视为成功,这确保了即使少数节点发生故障,集群仍能保持可用。Apache Doris 支持同城和跨区域容灾,可实现双集群主从模式。当部分节点出现故障时,集群能够自动隔离故障节点,避免整体集群可用性受到影响。
-
高兼容性:Apache Doris 与 MySQL 协议高度兼容,并支持标准 SQL 语法,涵盖了大多数 MySQL 和 Hive 函数。这种高兼容性使用户能够无缝迁移和集成现有的应用程序与工具。Apache Doris 支持 MySQL 生态系统,用户可以使用 MySQL 客户端工具连接 Doris,以便更便捷地进行操作和维护。它还支持 BI 报表工具和数据传输工具的 MySQL 协议兼容性,确保数据分析和数据传输过程的高效性与稳定性。
-
实时数据仓库:基于 Apache Doris 可以构建实时数据仓库服务。Apache Doris 具备秒级数据摄入能力,能在几秒内捕获上游在线交易数据库的增量变化并同步至 Doris。借助向量引擎、MPP 架构和 Pipeline 执行引擎,Doris 提供亚秒级数据查询能力,从而构建出高性能、低延迟的实时数据仓库平台。
-
统一湖仓:Apache Doris 能够基于数据湖或关系型数据库等外部数据源构建统一湖仓架构。Doris 统一湖仓解决方案实现了数据湖与数据仓库之间的无缝集成和数据自由流动,帮助用户直接利用数据仓库能力解决数据湖中的数据分析问题,同时充分发挥数据湖的数据管理能力以提升数据价值。
-
灵活建模:Apache Doris 提供多种建模方式,如宽表模型、预聚合模型、星型 / 雪花型 schema 等。在数据导入时,可以通过 Flink 或 Spark 等计算引擎将数据扁平化为宽表后写入 Doris,也可以直接将数据导入 Doris,通过视图、物化视图或实时多表关联等方式执行数据建模操作。
BI工具:
Smartbi、DataEase、FineBI、Tableau、Power BI 和 Apache Superset
存储引擎:
-
Apache Doris 拥有列式存储引擎,该引擎按列对数据进行编码、压缩和读取。实现了极高的数据压缩率,并在很大程度上减少了不必要的数据扫描,从而更高效地利用 IO 和 CPU 资源
-
Apache Doris 支持各种索引结构,以尽量减少数据扫描:
- 排序复合键索引(Sorted Compound Key Index):用户最多可以指定三列来形成复合排序键。这可以有效地筛选数据,以更好地支持高并发报表场景。
- 最小 / 最大索引(Min/Max Index):这使得在数值类型的等值和范围查询中能够进行有效的数据过滤。
- 布隆过滤器索引(BloomFilter Index😃:这在高基数列的等值过滤和筛选方面非常有效。
- 倒排索引(Inverted Index):这使得能够快速搜索任何字段。
-
Apache Doris 支持多种数据模型,并针对不同场景对其进行了优化:
- 明细模型Detail Model (Duplicate Key Model)(重复键模型):一种明细数据模型,旨在满足事实表的详细存储需求。
- 主键模型(Primary Key Model )(唯一键模型):确保键的唯一性;具有相同键的数据会被覆盖,从而实现行级数据更新。
- 聚合模型(Aggregate Model)(聚合键模型):合并具有相同键的值列,通过预聚合显著提升性能。
Apache Doris支持强一致性单表物化视图和异步刷新的多表物化视图。单表物化视图由系统自动刷新和维护,无需用户手动干预。多表物化视图可以使用集群内调度或外部调度工具定期刷新,降低数据建模的复杂性。
查询引擎:
Apache Doris 拥有一个基于大规模并行处理(MPP)的查询引擎,可在节点之间和节点内部进行并行执行。它支持对大表进行分布式混洗连接,以更好地处理复杂查询。
Apache Doris 的==查询引擎完全采用向量化,所有内存结构均以列式格式布局。==这可以大幅减少虚函数调用,提高缓存命中率,并有效利用 SIMD 指令。在宽表聚合场景中,Apache Doris 的性能比非向量化引擎高出 5 到 10 倍。
Apache Doris 采用自适应查询执行技术,根据运行时统计信息动态调整执行计划。例如,它可以生成运行时过滤器并将其推送到探测端。具体来说,它将过滤器推送到探测端的最底层扫描节点,这在很大程度上减少了要处理的数据量并提高了连接性能。Apache Doris 的运行时过滤器支持 In/Min/Max/ 布隆过滤器。
Apache Doris 使用管道执行引擎,该引擎将查询分解为多个子任务以进行并行执行,充分利用多核 CPU 的能力。它还==通过限制查询线程数量来同时解决线程爆炸问题。==管道执行引擎减少了数据复制和共享,优化了排序和聚合操作,从而显著提高了查询效率和吞吐量。
在优化器方面,Apache Doris 采用了基于成本的优化器(CBO)、基于规则的优化器(RBO)和基于历史的优化器(HBO)相结合的优化策略。 RBO 支持常量折叠、子查询重写、谓词下推等。CBO 支持连接重排序等优化。HBO 根据历史查询信息推荐最优执行计划。这些多种优化措施确保 Doris 能够为各种类型的查询列举出高性能的查询计划。
应用场景
- 金融支付平台安全分析架构
-
日志分析
-
物联网智能设备数据采集分析
doris安装
硬件-cpu检测:是否支持AVX2
cat /proc/cpuinfo | grep avx2
硬件-内存要求:
Component | Recommended Memory Configuration |
---|---|
FE | At least 16GB recommended. |
BE | Memory should be at least 4 times the number of CPU cores (for example, for a 16-core machine, at least 64GB memory is recommended). Better performance can be achieved with memory 8 times the number of CPU cores. |
硬件-存储要求:SSD ,HDD, 对象存储SSD is recommended for data storage in the following scenarios:
- High-concurrency point query scenarios with large-scale data
- High-frequency data update scenarios with large-scale data
参考资料
- https://doris.apache.org/
- https://doris.apache.org/docs/gettingStarted/quick-start
- EMQX: LOT中间件
- 阿里云原生实时数据仓库selectDB:基本Doris实现
- doris学习资料: https://www.bilibili.com/video/BV1EHCPY4EBu/?spm_id_from=333.788.recommend_more_video.1&vd_source=51c993d69874e13d552c1b91dbf90aec
- Apache Doris 源码阅读与解析:https://www.bilibili.com/video/BV1Wb4y1Y7wG?spm_id_from=333.788.recommend_more_video.1&vd_source=51c993d69874e13d552c1b91dbf90aec
- doris manager :doris集群管理 https://github.com/apache/doris-manager/blob/master/build.sh