Doris简介
Apache Doris是一款基于 MPP 架构的高性能、实时的分析型数据库,以高效、简单、统一的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建大屏看板、用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。
使用场景
- 报表分析
- 实时查询
- 面向用户或者客户的高并发报表分析
- 日志检索分析
系统架构
Doris 整体架构非常简单,只有两类进程:
- Frontend(FE):主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
- Backend(BE):主要负责数据存储、查询计划的执行。
都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。
查询引擎
Doris 采用 MPP 的模型,节点间和节点内都并行执行,也支持多个大表的分布式 Shuffle Join,从而能够更好应对复杂查询。
环境准备
本次使用三台虚拟机进行Doris集群部署,其中,FE节点与其中一个BE共享,机器规划如下,端口可全部使用默认端口
机器ip | 节点 |
192.168.245.100 | FE+BE |
192.168.245.101 | BE |
192.168.245.102 | BE |
关闭swap及防火墙
关闭swap分区
swap 分区是内核发现内存紧张时,会按照自己的策略将部分内存数据移动到配置的 swap 分区,由于内核策略不能充分了解应用的行为,会对数据库性能造成较大影响。
临时关闭,机器重启后会重新开启。
swapoff -a
永久关闭,使用 Linux root 账户,注释掉 /etc/fstab 中的 swap 分区,然后重启即可彻底关闭 swap 分区。
# /etc/fstab
# <file system> <dir> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs nodev,nosuid 0 0
/dev/sda1 / ext4 defaults,noatime 0 1
# /dev/sda2 none swap defaults 0 0
/dev/sda3 /home ext4 defaults,noatime 0 2
关闭防火墙
多个进程之间需要通过配置端口通信
systemctl stop firewalld
设置系统最大打开文件句柄数
vi /etc/security/limits.conf
* soft nofile 1000000
* hard nofile 1000000
修改虚拟内存区域数量
sysctl -w vm.max_map_count=3000000
安装软件
直接从官网下载Doris安装包,apache-doris-2.1.3-bin-x64.tar.gz下载后上传到Linux服务器
解压文件
tar -zxf apache-doris-2.1.3-bin-x64.tar.gz
#进入解压后的目录
cd apache-doris-2.1.3
#目录下有BE、FE两个目录,分别对应DorisFE及BE的软件
如下图
修改FE配置
修改日志路径,内存配置
cd fe/conf
vi fe.conf
#根据机器资源情况及java环境,修改内存配置
# doris日志路径
LOG_DIR = /data/doris/log/fe
# CMS JAVA OPTS 启动参数,默认 Java 最大堆内存为 8GB,在 JAVA_OPTS 参数中指定 -Xmx 选项可以调整 Java 最大堆内存。
JAVA_OPTS="-Dsun.security.krb5.debug=true -Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx16384m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:/data/doris/log/fe/fe.gc.log.$CUR_DATE"
## 根据java版本修改,如果是高版本的就用对应版本的配置
# For jdk 9+, this JAVA_OPTS_FOR_JDK_9 will be used as default CMS JVM options
# JAVA_OPTS_FOR_JDK_9="-Dsun.security.krb5.debug=true -..
# For jdk 9+, this JAVA_OPTS_FOR_JDK_9 will be used as default G1 JVM options
#JAVA_OPTS_FOR_JDK_9="-Djavax.security.auth.useSubjectCredsOnly=false -Xss2048m ...
# For jdk 17+, this JAVA_OPTS will be used as default JVM options
#JAVA_OPTS_FOR_JDK_17="-Djavax.security.auth.useSubjectCredsOnly=false -...
启动FE
在FE根目录下执行
bin/start_fe.sh --daemon
查看启动日志,确保服务正常启动
tail -300f {DORIS_LOG}/fe.INFO
修改BE配置
进入be目录,修改配置文件,可以只改数据存储目录,确保对应的磁盘空间足够,其他配置可以使用默认
## 在 storage_root_path 中使用 medium 指定磁盘类型
## /home/disk1/doris,medium:HDD: 表示该目录存储冷数据;
## /home/disk2/doris,medium:SSD: 表示该目录存储热数据;
storage_root_path=/home/disk1/doris,medium:HDD;/home/disk2/doris,medium:SSD
启动BE
在BE根目录下执行
bin/start_be.sh --daemon
查看BE节点启动日志,确保服务正常启动
BE节点配置
将上述确认正常启动的BE目录分发到其他节点,我这里是101、102,使用同样的方式启动BE进程。可以使用 RSYNC进行同步。
检查节点
使用jps命令查看进程,确保FE及BE进程正常
配置集群
向FE添加BE节点
登录Doris的控制台(只能使用root账号登录)
ALTER SYSTEM ADD BACKEND "<be_ip_address>:<be_heartbeat_service_port>"