参考文献
-
apache doris在蜀海供应链数仓建设中的实践
-
应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
一、doris的背景介绍
doris的使用场景
实时/离线一体的数仓
借用一句话: Uniq 模型拳打KUDU、HUDI,Aggregate 模型脚踢Kylin、ClickHouse,Duplicate 模型跟Hive 势不两立。Doris+Flink将会是实时数据仓库的重要基石。
doris选型依据
doris是一个rolap, 可以满足以下需求
-
同时支持高并发点查询和高吞吐的Ad-hoc查询
-
同时支持离线批量导入和实时数据导入
-
同时支持明细和聚合查询
-
兼容MySQL协议和标准SQL
-
支持Rollup Table和Rollup Table的智能查询路由
-
支持较好的多表Join策略和灵活的表达式查询
-
支持Schema在线变更
-
支持Range和Hash二级分区
相比较kylin, druid而言, Kylin 主要满足离线固化多维分析的需求,Druid 主要满足实时多维分析的需求。
对比其他的ROLAP系统,
-
SQL on Hadoop 系统:无法支持更新,性能也较差。
-
TiDB: TiDB 虽然当初号称可以支撑 100%的 TP 和 80%的 AP,但是架构设计主要是面向 TP 场景,缺少针对 AP 场景专门的优化,所以 OLAP 查询性能较差,TiDB 团队目前正在研发专门的 OLAP 产品:TiFlash,TiFlash 具有以下特点:列存,向量化执行,MPP,而这些特点 Doris 也都有。
-
SnappyData:SnappyData 是基于 Spark + GemFire 实现的内存数据库,机器成本较高,而我们机器资源很有限,此外 SnappyData 的计算是基于 JVM 的,会有 GC 问题,影响查询稳定性。
-
ClickHouse:Clickhouse 是一款单机性能十分彪悍的 OLAP 系统,但是当集群加减节点后,系统不能自动感知集群拓扑变化,也不能自动 balance 数据,导致运维成本很高,此外 Clickhouse 也不支持标准 SQL,我们用户接入的成本也很高。
为什么选择doris
Doris 的优点是功能强大,易用性好。 功能强大指可以满足我们用户的需求,易用性好主要指 兼容 Mysql 协议和语法,以及 Online Schema Change。
对平台侧来说,Doris 的优点是易运维,易扩展和高可用:
-
易运维指 Doris 无外部系统依赖,部署和配置都很简单。
-
易扩展指 Doris 可以一键加减节点,并自动均衡数据。
-
高可用值 Dors 的 FE 和 BE 都可以容忍少数节点挂掉。
谁在用doris
olap引擎的三大类型:
名称 | 描述 | 细节数据存储位置 | 聚合后的数据存储位置 | 例子 |
ROLAP(Relational OLAP) | 基于关系数据库的OLAP实现 | 关系型数据库 | 关系型数据库 | ROLAP可选Presto、impala等,ClickHouse则是ROLAP的佼佼者。 |
MOLAP(Multidimensional OLAP) | 基于多维数据组织的OLAP实现 | 数据立方体 | 数据立方体 | Kylin、Druid |
HOLAP(Hybrid OLAP) | 基于混合数据组织的OLAP实现 | 关系型数据库 | 数据立方体 |
大数据篇:一文读懂@数据仓库
OLAP(总):Impala/Druid/Presto/Kylin/Clickhouse/Greenplum等对比
常见的doris数仓流程
doris的架构
doris架构简介
Doris (HOLAP),实时数据仓库的王者。_CesarChoy的博客-CSDN博客_doris 缺点
Doris是基于MPP架构的OLAP引擎,主要整合了Google Mesa(数据模型)、Apache Impala(MPP Query Engine)和Apache ORCFile (存储格式,编码和压缩)的技术。
FE:Doris的前端节点,以java语言为主,主要负责接受和返回客户端请求,元数据以及集群管理,查询计划生成等工作
BE:Doris的后端节点,以C++语言为主,主要负责数据存储与管理、查询计划执行等工作
新架构优点
•数据导入方式简单,我们针对不同业务场景使用了三种导入方式
1.Routin load : 异构实时异步数据导入(这种主要使用在一些临时的数据接入)
2.Stream Load :业务数据实时异步数据接入(我们封装了业务数据零代码入仓,后面我会介绍)
3.Insert into :定时通过 DWD 层数仓表生成 DWS/ADS 层数仓表
•数据链路缩短,数据实时性更高
•数仓使用成本降低
-
Doris 支持 MySQL 协议,数据分析师可以直接进行自助取数。
-
Doris 不依赖 Hadoop 生态圈组件,降低了架构的复杂度,大大降低运维成本
-
Doris 同时支持离线批量和实时数据,一个框架搞定一切
二、doris原理和使用
doris的数据模型
数据模型、ROLLUP 及前缀索引 - Apache Doris
doris的底层数据组织方式
分区与分桶
Doris 支持两层的数据划分。第一层是 Partition,支持 Range 和 List 的划分方式。第二层是 Bucket(Tablet),仅支持 Hash 的划分方式。
动态分区
创建doris表的时候支持动态分区,比如按照时间的HOUR、DAY、WEEK、
MONTH 的时间方式创建动态分区表
动态分区 - Apache Doris
数据导入
导入总览 - Apache Doris