Apache Doris

Apache Doris介绍

Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

特点: 列示存储、mmp(大规模并行处理)、支持实时数据分析、高度兼容mysql协议、高并发和高通图的Ad-hoc查询、支出聚合+明细数据查询、无外部系统依赖。

底层架构:

Doris =

Google mesa(满足一系列复杂且具有挑战性的用户和系统需求,本身不提供SQL查询引擎)

Apache Lmpala(MPP SQL查询引擎,做更多的查询优化,但缺少较完美的分布式存储引擎)

Apache ORCFile(只访问查询涉及的列,大量降低系统I/O,有利于查询的并发处理)

软硬件需求

Linux操作系统版本需求

|--------|----------|
| CentOS | 7.1及以上 |
| Ubuntu | 16.04及以上 |

软件需求

|------|----------|
| Java | 1.8 |
| GCC | 4.8.2及以上 |

开发测试环境

|----------|-----|-------|----------------|------|-------|
| 模版 | CPU | 内存 | 磁盘 | 网络 | 实例数量 |
| Frontend | 8核+ | 8GB+ | SSD或SATA,10GB+ | 千兆网卡 | 1 |
| Backend | 8核+ | 16GB+ | SSD或SATA,50GB+ | 千兆网卡 | 1-3* |

生产环境

|----------|------|-------|------------------|------|-------|
| 模版 | CPU | 内存 | 磁盘 | 网络 | 实例数量 |
| Frontend | 16核+ | 64GB+ | SSD或RAID卡,100GB+ | 万兆网卡 | 1-3* |
| Backend | 16核+ | 64GB+ | SSD或SATA,100GB+ | 万兆网卡 | 3* |

适用场景

  • 报表分析

实时看板;面相企业内部分析师和管理者的报表;面向用户或者客户的高并发报表分析。

  • 即席查询

面向分析师的自助分析,查询模式不固定,要求较高的吞吐。

  • 统一数仓构建

一个平台满足统一的数据仓库建设需求,简化繁琐的大数据软件栈。

  • 数据湖联邦查询

通过外表的方式联邦分析位于 Hive、Iceberg、Hudi 中的数据,在避免数据拷贝的前提下,查询性能大幅提升。

部署

用初始化脚本安装mysql数据库

curl-o online_index.sh https://sc-tools.uniscity.com/linux/script/online_index.sh

bash online_index.sh

安装包下载

复制代码
#初始化目录
cd /opt 
mkdir doris1.2.4

#查看系统CPU型号
uname -a

#下载与系统cpu型号一致的包
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.0-bin-x64.tar.gz

#解压
xz -d apache-doris-2.0.0-bin-x64.tar.gz
tar -xvf apache-doris-2.0.0-bin-x64.tar.gz

时钟设置

复制代码
#同步时间,需要使⽤ ntpdate 命令,如果没有可以使⽤yum安装
yum install ntpdate

#使⽤ntpdate同步⽹络上的时间服务器的时间,例如 : time.windows.com、 ntp.aliyun.com
ntpdate -u ntp.aliyun.com

#可以将时间同步做成⼀个定时任务,每隔⼀段时间就同步⼀下⽹络的时间
crontab -e
* * * * * /usr/sbin/ntpdate -u ntp.aliyun.com   #输入然后wq保存退出

#查看crontab运行情况
crontab -l
tail -n 5 /var/log/cron

打开文件limits.conf

复制代码
sudo vim /etc/security/limits.conf

在文件的末尾处添加或者修改

复制代码
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

打开文件sysctl.conf

复制代码
sudo vim /etc/sysctl.conf
# 添加
fs.file-max = 6553560
vm.max_map_count=2000000

FE配置

复制代码
vim fe/conf/fe.conf

#只需要修改priority_networks
priority_networks = 10.0.53.161/24

BE配置

复制代码
vim be/conf/be.conf 

#需要修改JAVA_HOME和priority_networks即可
JAVA_HOME=/usr/local/java/jdk1.8.0_361/
priority_networks = 10.0.53.161/24

初始化

复制代码
#启动fe
sh fe/bin/start_fe.sh --daemon

#启动be
sh be/bin/start_be.sh --daemon

#添加be到集群
alter system add backend "192.168.31.81:9050";

#查看be状态
show PROC '/backends';
#查看fe状态
show frontends\G;

FE Web 登录页面

访问地址: http://localhost:8030/login

初始用户: root

密码:无

Doris的数据模型

Doris的数据模型主要分为3类:

  • Aggregate
  • Unique
  • Duplicate
Aggregate模型

适用于有固定模式的报表类查询场景。

表中的列按照是否设置AggregationType分为key(维度列)和Value(指标列)。没有设置AggregationType的称为Key,设置了AggregationType的称为Value。

导入数据时,Key列完全相同的行会聚合成一行,其Value列按照设置的AggregationType进行聚合。

AggregationType目前有以下方式:

  1. SUM:求和,多行的Value累加。
  2. REPLACE:替代,下一批数据的Value会替换之前导入的行中的Value。
  3. MAx:保留最大值。
  4. MIN:保留最小值。

在建表语句后添加以下语句声明Key列:

复制代码
AGGREGATE KEY();
Unique模型

适用于需要保证主键唯一性的多维分析场景。

读时合并

Unique的读时合并可以用聚合模型中的REPLACE方式替代。

写时合并

Unique的写时合并不同于聚合模式的读时合并,其通过在写入时做额外的工作,实现了最优的查询性能。

在建表语句后添加以下语句声明唯一主键和写时合并:

复制代码
UNIQUE KEY()
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"enable_unique_key_merge_on_write" = "true"
);
Duplicate模型

适用于任意维度的Ad-hoc查询,不受聚合模型的约束。

区别于上述2种模型,Duplicate模型的数据完全按照导入文件中的数据进行存储,不进行任何聚合。

在建表语句后添加以下语句声明排序依赖的键值:

复制代码
DUPLICATE KEY();

当创建表的时候没有指定Unique、Aggregate或Duplicate时,会默认创建一个Duplicate模型的表,并自动指定排序列。

如果不需要排序时可以在表属性配置中添加如下语句:

复制代码
PROPERTIES (
"enable_duplicate_without_keys_by_default" = "true"
);
相关推荐
CopyLower2 小时前
Apache Dubbo 与 ZooKeeper 集成:服务注册与发现的全解析
zookeeper·apache·dubbo
Hello.Reader3 小时前
Apache Dubbo Pixiu打造微服务生态的轻量级 API 网关
微服务·apache·dubbo
x-cmd4 小时前
[250324] Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft!| Wine 10.4 发布!
java·分布式·zookeeper·kafka·apache·kraft·wine
故事与他6455 小时前
Apache中间件漏洞攻略
java·服务器·安全·网络安全·中间件·log4j·apache
一蓑烟雨,一任平生1 天前
原生微信小程序基础语法--快速总结
微信小程序·小程序·apache
执念WRD1 天前
常见中间件漏洞之四:Apache
中间件·apache
灰灰老师2 天前
Ubuntu22.04 UEFI系统配置Apache Tomcat/8.5.87为开机自动启动
java·tomcat·apache
衣舞晨风2 天前
Apache APISIX 架构浅析
架构·apache·openresty·apisix
树懒_Zz3 天前
Apache Tomcat CVE-2025-24813 安全漏洞
java·tomcat·apache