【亲测可用】Doris3.x分布式集群安装部署-最新版本

📅 发布时间:2026/10/15 1:57:58
【亲测可用】Doris3.x分布式集群安装部署-最新版本
Doris 作为⼀款开源的 MPP 架构的OLAP 数据库能够运⾏在绝⼤多数主流的商⽤服务器上。为了能够充分运⽤ MPP 架构的并发优势以及 Doris 的⾼可⽤特性我们建议 Doris 分布式集群的部署遵循以下要求。2.1软硬件环境检查2.1.1硬件检查1.CPU当安装 Doris 时建议选择配备支持 AVX2 指令集的机器以利用 AVX2 的向量化能力实现查询向量化加速。运行以下命令有输出结果即表示机器支持 AVX2 指令集。[hadoophadoop1 app]$ cat /proc/cpuinfo | grep avx2如果机器不支持 AVX2 指令集可以使用 No AVX2 的 Doris 安装包进行部署。2.内存Doris 没有强制的内存限制。但在生产环境中一般建议内存至少是 CPU 核数的 4 倍例如16 核机器至少配置 64G 内存。当内存是 CPU 核数的 8 倍时性能更佳。查看cpu核数[roothadoop1 ~]# lscpu查看内存大小[roothadoop1 ~]# free3.存储Doris 部署时数据可以存放在 SSD固态硬盘 或 HDD机械硬盘 硬盘或者对象存储中。在以下几种场景中建议使用 SSD 作为数据存储1大规模数据量下的高并发点查场景。2大规模数据量下的高频数据更新场景。4.文件系统ext4 和 xfs 文件系统均支持。[roothadoop1 ~]# cat /etc/fstab5.网卡Doris 在计算过程中会将数据分片分发到不同实例进行并行处理这会产生一定的网络资源开销。为最大程度优化 Doris 性能并降低网络资源开销强烈建议在部署时选用万兆网卡10 Gigabit Ethernet即 10GbE或更快网络。2.1.2服务器建议配置Doris 支持运行和部署在 x86-64 架构的服务器平台或 ARM64 架构的服务器上。1.开发及测试环境注意事项1在验证测试环境中可以将 FE 与 BE 部署在同一台服务器上。2一台机器上一般只建议部署一个 BE 实例同时只能部署一个 FE。3如果需要 3 副本数据那么至少需要 3 台机器各部署一个 BE 实例而不是 1 台机器部署 3 个 BE 实例。4多个 FE 所在服务器的时钟必须保持一致最多允许 5 秒的时钟偏差。5测试环境也可以仅使用一个 BE 进行测试。实际生产环境中BE 实例数量直接决定整体查询延迟。2.生产环境注意事项1在生产环境中如果 FE 与 BE 混布需要注意资源争用问题建议元数据存储与数据存储分盘存放。2BE 节点可以配置多块硬盘存储在一个 BE 实例上绑定多块 HDD 或 SSD 盘。3集群性能与 BE 节点资源有关BE 节点越多Doris 性能越好。通常情况下在 10 - 100 台机器上可以充分发挥 Doris 的性能。2.1.3磁盘空间计算在 Doris 集群中FE 主要用于元数据存储包括元数据 Edit Log 和 Image。BE 的磁盘空间主要用于存放数据需要根据业务需求计算。2.1.4Java版本Doris 的所有进程都依赖 JavaDoris3.x版本要求Java17及以上版本。2.2操作系统检查2.2.1操作系统版本要求2.2.2关闭swap分区在部署 Doris 时建议关闭 swap 分区。swap 分区是内核发现内存紧张时会按照自己的策略将部分内存数据移动到配置的 swap 分区由于内核策略不能充分了解应用的行为会对数据库性能造成较大影响。所以建议关闭。1临时关闭临时关闭下次机器启动时swap 还会被打开。[roothadoop1 ~]# swapoff -a2永久关闭使用 Linux root 账户注释掉 /etc/fstab 中的 swap 分区。[roothadoop01 mnt]# vi /etc/fstab然后重启即可彻底关闭 swap 分区。[roothadoop01 mnt]# reboot3验证分区是否关闭[roothadoop01 ~]# free -m注意事项不建议使用设置 vm.swappiness 0 的方式因为这个参数在不同的 Linux 内核版本会有不同的语义很多情况下不能完全关闭 swap。2.2.3检测和关闭系统防火墙如果发现端口不通可以试着关闭防火墙确认是否是本机防火墙造成。如果是防火墙造成可以根据配置的 Doris 各组件端口打开相应的端口通信。#关闭防火墙[roothadoop1 ~]# systemctl stop firewalld.service[roothadoop1 ~]# systemctl disable firewalld.service#查看防火墙是否关闭[roothadoop1 ~]# systemctl status firewalld.service2.2.4时钟同步Doris 的元数据要求时间精度要⼩于5000ms所以所有集群所有机器要进⾏时钟同步避免因为时钟问题引发的元数据不⼀致导致服务出现异常。通常情况下可以通过配置 NTP 服务保证各节点时钟同步。[roothadoop1 ~]# systemctl start ntpd.service[roothadoop1 ~]# systemctl enable ntpd.service查看集群各个节点得时间误差在5000ms以内。2.2.5设置系统最⼤打开⽂件句柄数Doris 由于依赖大量文件来管理表数据所以需要将系统对程序打开文件数的限制调高。[roothadoop1 ~]# vi /etc/security/limits.conf2.2.6设置虚拟内存区域的最大数量限制修改虚拟内存区域至少为 2000000。[roothadoop1 ~]# vi /etc/sysctl.conf使配置文件生效[roothadoop1 ~]# sysctl -p2.3网络检查Doris 各个实例直接通过⽹络进⾏通讯。以下表格展示了所有需要的端⼝注意当部署多个FE实例时要保证FE的http_port配置相同部署前请确保各个端⼝在应有⽅向上的访问权限。2.4集群部署注意软硬件环境检查、操作系统检查以及网络检查在集群各个节点都需要执行。2.2.1集群规划2.2.2解压Doris在hadoop1节点操作。#解压Doris[hadoophadoop1 app]$ tar -zxvf apache-doris-3.0.2-bin-x64.tar.gz#创建软连接[hadoophadoop1 app]$ ln -s apache-doris-3.0.2-bin-x64 doris2.2.3配置fe在hadoop1节点操作。[hadoophadoop1 conf]$ vi fe.conf#配置JAVA_HOMEJAVA_HOME/home/hadoop/app/jdk#指定doris元数据路径meta_dir /home/hadoop/app/doris/doris-meta#绑定每台机器自己的ippriority_networks 192.168.222.129/242.2.4配置be在hadoop1节点操作。[hadoophadoop1 conf]$ vi be.conf#配置JAVA_HOMEJAVA_HOME/home/hadoop/app/jdk#绑定每台机器自己的ippriority_networks 192.168.222.129/24#指定数据存放路径storage_root_path /home/hadoop/app/doris/storage2.2.5同步并修改配置1.配置文件同步到其他节点#将doris配置同步到hadoop2和hadoop3节点[hadoophadoop1 app]$ deploy.sh apache-doris-3.0.2-bin-x64 /home/hadoop/app/ slave#创建软连接[hadoophadoop2 app]$ ln -s apache-doris-3.0.2-bin-x64 doris[hadoophadoop3 app]$ ln -s apache-doris-3.0.2-bin-x64 doris2.修改配置文件修改hadoop2和hadoop3相关配置文件。#修改fe.conf配置文件[hadoophadoop2 conf]$ vi fe.confpriority_networks 192.168.222.130/24[hadoophadoop3 conf]$ vi fe.confpriority_networks 192.168.222.131/24#修改be.conf配置文件[hadoophadoop2 conf]$ vi be.confpriority_networks 192.168.222.130/24[hadoophadoop3 conf]$ vi be.confpriority_networks 192.168.222.131/242.2.6创建目录在hadoop1、hadoop2和hadoop3节点创建元数据和数据存储目录。#创建元数据存储目录[hadoophadoop1 doris]$ runRemoteCmd.sh “mkdir -p /home/hadoop/app/doris/doris-meta” all#创建数据存储目录[hadoophadoop1 doris]$ runRemoteCmd.sh “mkdir -p /home/hadoop/app/doris/storage” all2.2.7启动fe服务在hadoop1节点执行。#启动第一个FE节点[hadoophadoop1 fe]$ bin/start_fe.sh --daemon#在hadoop1节点通过MySQL 客户端链接FE,并添加新fe到集群[roothadoop1 ~]# mysql -h hadoop1 -uroot -P 9030#正确写法mysql ALTER SYSTEM ADD FOLLOWER “192.168.222.130:9010”;mysql ALTER SYSTEM ADD OBSERVER “192.168.222.131:9010”;#错误写法mysql ALTER SYSTEM ADD FOLLOWER “hadoop2:9010”;mysql ALTER SYSTEM ADD OBSERVER “hadoop3:9010”;备注fe不支持域名映射需要使用ip而非hostname。在hadoop2和hadoop3节点启动fe服务。#hadoop2和hadoop3节点第一次启动新的FE[hadoophadoop2 fe]$ bin/start_fe.sh --helper hadoop1:9010 --daemon[hadoophadoop3 fe]$ bin/start_fe.sh --helper hadoop1:9010 --daemon备注第一次启动时才需要添加–helper参数。#hadoop2和hadoop3节点再次启动fe[hadoophadoop2 fe]$ bin/start_fe.sh hadoop1:9010 --daemon[hadoophadoop3 fe]$ bin/start_fe.sh hadoop1:9010 --daemon#查看FE集群状态mysql SHOW PROC ‘/frontends’;看到3个节点的fe服务都是Alive状态表示fe集群启动成功。2.2.8启动be服务#在hadoop1节点操作BE节点需要先在FE中添加才可以加入集群[roothadoop1 ~]# mysql -h hadoop1 -uroot -P 9030mysql ALTER SYSTEM ADD BACKEND “hadoop1:9050”;mysql ALTER SYSTEM ADD BACKEND “hadoop2:9050”;mysql ALTER SYSTEM ADD BACKEND “hadoop3:9050”;备注第一次启动be服务时执行以后跳过该操作。#所有节点启动BE服务[hadoophadoop1 fe]$ runRemoteCmd.sh “/home/hadoop/app/doris/be/bin/start_be.sh --daemon” all#查看BE集群状态SHOW PROC ‘/backends’;看到3个节点的be服务都是Alive状态表示fe集群启动成功。2.2.9启动broker服务Broker 以插件的形式独⽴于Doris部署。如果需要从第三⽅存储系统导⼊数据到Doris就需要部署相应的Broker默认提供了读取HDFS。fs_broker是⽆状态的建议每⼀个FE和BE节点都部署⼀个Broker。#启动broker[hadoophadoop1 apache_hdfs_broker]$ bin/start_broker.sh --daemon[hadoophadoop2 apache_hdfs_broker]$ bin/start_broker.sh --daemon[hadoophadoop3 apache_hdfs_broker]$ bin/start_broker.sh --daemon#添加broker到集群要让Doris的FE和BE知道Broker在哪些节点上通过sql命令添加Broker节点列表。#连接MySQL客户端[roothadoop1 ~]# mysql -h hadoop1 -uroot -P 9030#添加brokermysql ALTER SYSTEM ADD BROKER hdfs_broker “hadoop1:8000”,“hadoop2:8000”,“hadoop3:8000”;备注 hdfs_broker为broker取的名称hadoop1,hadoop2,hadoop3为broker部署节点域名8000为broker默认端口号。#查看broker状态SHOW PROC “/brokers”;看到3个节点的broker服务都是Alive状态表示broker集群启动成功。2.2.10测试验证集群为了验证集群的正确性可以在新创建的集群中创建一个测试表并插入一些数据。1创建测试数据库在 MySQL Client 中执行 create database 语句[roothadoop1 ~]# mysql -h hadoop1 -uroot -P 90302创建测试表在 MySQL Client 中执行 create table 语句CREATE TABLE testdb.table_hash(k1 TINYINT,k2 DECIMAL(10, 2) DEFAULT “10.5”,k3 VARCHAR(10) COMMENT “string column”,k4 INT NOT NULL DEFAULT “1” COMMENT “int column”)COMMENT “my first table”DISTRIBUTED BY HASH(k1) BUCKETS 32;3插入部分测试数据在 MySQL Client 中执行 insert into 语句INSERT INTO testdb.table_hash VALUES(1, 10.1, ‘AAA’, 10),(2, 10.2, ‘BBB’, 20),(3, 10.3, ‘CCC’, 30),(4, 10.4, ‘DDD’, 40),(5, 10.5, ‘EEE’, 50);4验证插入数据正确性在 MySQL Client 中执行 select 语句SELECT * from testdb.table_hash;如果上述操作没有问题表明Doris集群搭建成功。2.2.11查看fe的web ui使用root账户免密登录Doris web ui界面。地址http://192.168.222.129:8030/login账号root 密码空成功登录Doris web ui界面如下所示。