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

Doris 作为⼀款开源的 MPP 架构的OLAP 数据库,能够运⾏在绝⼤多数主流的商⽤服务器上。为了能够充分运⽤ MPP 架构的并发优势,以及 Doris 的⾼可⽤特性,我们建议 Doris 分布式集群的部署遵循以下要求。

2.1软硬件环境检查

2.1.1硬件检查

1.CPU
当安装 Doris 时,建议选择配备支持 AVX2 指令集的机器,以利用 AVX2 的向量化能力实现查询向量化加速。运行以下命令,有输出结果,即表示机器支持 AVX2 指令集。
[hadoop@hadoop1 app]$ cat /proc/cpuinfo | grep avx2
在这里插入图片描述
如果机器不支持 AVX2 指令集,可以使用 No AVX2 的 Doris 安装包进行部署。

2.内存
Doris 没有强制的内存限制。但在生产环境中,一般建议内存至少是 CPU 核数的 4 倍(例如,16 核机器至少配置 64G 内存)。当内存是 CPU 核数的 8 倍时,性能更佳。
查看cpu核数:
[root@hadoop1 ~]# lscpu
在这里插入图片描述
查看内存大小:
[root@hadoop1 ~]# free
在这里插入图片描述
3.存储
Doris 部署时数据可以存放在 SSD(固态硬盘) 或 HDD(机械硬盘) 硬盘或者对象存储中。在以下几种场景中建议使用 SSD 作为数据存储:
1)大规模数据量下的高并发点查场景。
2)大规模数据量下的高频数据更新场景。

4.文件系统
ext4 和 xfs 文件系统均支持。
[root@hadoop1 ~]# cat /etc/fstab
在这里插入图片描述
5.网卡
Doris 在计算过程中会将数据分片分发到不同实例进行并行处理,这会产生一定的网络资源开销。为最大程度优化 Doris 性能并降低网络资源开销,强烈建议在部署时选用万兆网卡(10 Gigabit Ethernet,即 10GbE)或更快网络。

2.1.2服务器建议配置
Doris 支持运行和部署在 x86-64 架构的服务器平台或 ARM64 架构的服务器上。
1.开发及测试环境
模块	CPU	内存	磁盘	网络	实例数量
Frontend	8核+	8GB+	SSD或SATA 10GB+	千兆网卡	1
Backend	8核+	16GB+	SSD或SATA 10GB+	千兆网卡	1-3*
注意事项:
(1)在验证测试环境中,可以将 FE 与 BE 部署在同一台服务器上。
(2)一台机器上一般只建议部署一个 BE 实例,同时只能部署一个 FE。
(3)如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例,而不是 1 台机器部署 3 个 BE 实例。
(4)多个 FE 所在服务器的时钟必须保持一致,最多允许 5 秒的时钟偏差。
(5)测试环境也可以仅使用一个 BE 进行测试。实际生产环境中,BE 实例数量直接决定整体查询延迟。

2.生产环境
在这里插入图片描述
注意事项:
(1)在生产环境中,如果 FE 与 BE 混布,需要注意资源争用问题,建议元数据存储与数据存储分盘存放。
(2)BE 节点可以配置多块硬盘存储,在一个 BE 实例上绑定多块 HDD 或 SSD 盘。
(3)集群性能与 BE 节点资源有关,BE 节点越多,Doris 性能越好。通常情况下,在 10 - 100 台机器上可以充分发挥 Doris 的性能。

2.1.3磁盘空间计算
在 Doris 集群中,FE 主要用于元数据存储,包括元数据 Edit Log 和 Image。BE 的磁盘空间主要用于存放数据,需要根据业务需求计算。
在这里插入图片描述
2.1.4Java版本
Doris 的所有进程都依赖 Java,Doris3.x版本要求Java17及以上版本。
在这里插入图片描述

2.2操作系统检查

2.2.1操作系统版本要求
在这里插入图片描述
2.2.2关闭swap分区
在部署 Doris 时,建议关闭 swap 分区。swap 分区是内核发现内存紧张时,会按照自己的策略将部分内存数据移动到配置的 swap 分区,由于内核策略不能充分了解应用的行为,会对数据库性能造成较大影响。所以建议关闭。
(1)临时关闭
临时关闭,下次机器启动时,swap 还会被打开。
[root@hadoop1 ~]# swapoff -a

(2)永久关闭
使用 Linux root 账户,注释掉 /etc/fstab 中的 swap 分区。
[root@hadoop01 mnt]# vi /etc/fstab
在这里插入图片描述

然后重启即可彻底关闭 swap 分区。
[root@hadoop01 mnt]# reboot

(3)验证分区是否关闭
[root@hadoop01 ~]# free -m
在这里插入图片描述
注意事项:
不建议使用设置 vm.swappiness = 0 的方式,因为这个参数在不同的 Linux 内核版本会有不同的语义,很多情况下不能完全关闭 swap。

2.2.3检测和关闭系统防火墙
如果发现端口不通,可以试着关闭防火墙,确认是否是本机防火墙造成。如果是防火墙造成,可以根据配置的 Doris 各组件端口打开相应的端口通信。
#关闭防火墙
[root@hadoop1 ~]# systemctl stop firewalld.service
[root@hadoop1 ~]# systemctl disable firewalld.service
#查看防火墙是否关闭
[root@hadoop1 ~]# systemctl status firewalld.service
在这里插入图片描述

2.2.4时钟同步
Doris 的元数据要求时间精度要⼩于5000ms,所以所有集群所有机器要进⾏时钟同步,避免因为时钟问题引发的元数据不⼀致导致服务出现异常。
通常情况下,可以通过配置 NTP 服务保证各节点时钟同步。
[root@hadoop1 ~]# systemctl start ntpd.service
[root@hadoop1 ~]# systemctl enable ntpd.service
查看集群各个节点得时间误差在5000ms以内。
在这里插入图片描述
2.2.5设置系统最⼤打开⽂件句柄数
Doris 由于依赖大量文件来管理表数据,所以需要将系统对程序打开文件数的限制调高。
[root@hadoop1 ~]# vi /etc/security/limits.conf
在这里插入图片描述
2.2.6设置虚拟内存区域的最大数量限制
修改虚拟内存区域至少为 2000000。
[root@hadoop1 ~]# vi /etc/sysctl.conf
在这里插入图片描述
使配置文件生效
[root@hadoop1 ~]# sysctl -p
在这里插入图片描述

2.3网络检查

Doris 各个实例直接通过⽹络进⾏通讯。以下表格展示了所有需要的端⼝:
在这里插入图片描述
注意:当部署多个FE实例时,要保证FE的http_port配置相同,部署前请确保各个端⼝在应有⽅向上的访问权限。

2.4集群部署

注意,软硬件环境检查、操作系统检查以及网络检查,在集群各个节点都需要执行。
2.2.1集群规划
在这里插入图片描述
2.2.2解压Doris
在hadoop1节点操作。
#解压Doris
[hadoop@hadoop1 app]$ tar -zxvf apache-doris-3.0.2-bin-x64.tar.gz

#创建软连接
[hadoop@hadoop1 app]$ ln -s apache-doris-3.0.2-bin-x64 doris

2.2.3配置fe
在hadoop1节点操作。
[hadoop@hadoop1 conf]$ vi fe.conf
#配置JAVA_HOME
JAVA_HOME=/home/hadoop/app/jdk
#指定doris元数据路径
meta_dir = /home/hadoop/app/doris/doris-meta
#绑定每台机器自己的ip
priority_networks = 192.168.222.129/24

2.2.4配置be
在hadoop1节点操作。
[hadoop@hadoop1 conf]$ vi be.conf
#配置JAVA_HOME
JAVA_HOME=/home/hadoop/app/jdk
#绑定每台机器自己的ip
priority_networks = 192.168.222.129/24
#指定数据存放路径
storage_root_path = /home/hadoop/app/doris/storage

2.2.5同步并修改配置
1.配置文件同步到其他节点
#将doris配置同步到hadoop2和hadoop3节点
[hadoop@hadoop1 app]$ deploy.sh apache-doris-3.0.2-bin-x64 /home/hadoop/app/ slave
#创建软连接
[hadoop@hadoop2 app]$ ln -s apache-doris-3.0.2-bin-x64 doris
[hadoop@hadoop3 app]$ ln -s apache-doris-3.0.2-bin-x64 doris

2.修改配置文件
修改hadoop2和hadoop3相关配置文件。
#修改fe.conf配置文件
[hadoop@hadoop2 conf]$ vi fe.conf
priority_networks = 192.168.222.130/24
[hadoop@hadoop3 conf]$ vi fe.conf
priority_networks = 192.168.222.131/24

#修改be.conf配置文件
[hadoop@hadoop2 conf]$ vi be.conf
priority_networks = 192.168.222.130/24
[hadoop@hadoop3 conf]$ vi be.conf
priority_networks = 192.168.222.131/24

2.2.6创建目录
在hadoop1、hadoop2和hadoop3节点创建元数据和数据存储目录。
#创建元数据存储目录
[hadoop@hadoop1 doris]$ runRemoteCmd.sh “mkdir -p /home/hadoop/app/doris/doris-meta” all
#创建数据存储目录
[hadoop@hadoop1 doris]$ runRemoteCmd.sh “mkdir -p /home/hadoop/app/doris/storage” all

2.2.7启动fe服务
在hadoop1节点执行。
#启动第一个FE节点
[hadoop@hadoop1 fe]$ bin/start_fe.sh --daemon
在这里插入图片描述
#在hadoop1节点,通过MySQL 客户端链接FE,并添加新fe到集群
[root@hadoop1 ~]# 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
[hadoop@hadoop2 fe]$ bin/start_fe.sh --helper hadoop1:9010 --daemon
[hadoop@hadoop3 fe]$ bin/start_fe.sh --helper hadoop1:9010 --daemon
备注:第一次启动时才需要添加–helper参数。

#hadoop2和hadoop3节点再次启动fe
[hadoop@hadoop2 fe]$ bin/start_fe.sh hadoop1:9010 --daemon
在这里插入图片描述
[hadoop@hadoop3 fe]$ bin/start_fe.sh hadoop1:9010 --daemon
在这里插入图片描述
#查看FE集群状态
mysql> SHOW PROC ‘/frontends’;
在这里插入图片描述
看到3个节点的fe服务都是Alive状态,表示fe集群启动成功。

2.2.8启动be服务
#在hadoop1节点操作,BE节点需要先在FE中添加,才可以加入集群
[root@hadoop1 ~]# mysql -h hadoop1 -uroot -P 9030
mysql> ALTER SYSTEM ADD BACKEND “hadoop1:9050”;
mysql> ALTER SYSTEM ADD BACKEND “hadoop2:9050”;
mysql> ALTER SYSTEM ADD BACKEND “hadoop3:9050”;
备注:第一次启动be服务时执行,以后跳过该操作。

#所有节点启动BE服务
[hadoop@hadoop1 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
[hadoop@hadoop1 apache_hdfs_broker]$ bin/start_broker.sh --daemon
在这里插入图片描述
[hadoop@hadoop2 apache_hdfs_broker]$ bin/start_broker.sh --daemon
在这里插入图片描述
[hadoop@hadoop3 apache_hdfs_broker]$ bin/start_broker.sh --daemon
在这里插入图片描述
#添加broker到集群,要让Doris的FE和BE知道Broker在哪些节点上,通过sql命令添加Broker节点列表。
#连接MySQL客户端
[root@hadoop1 ~]# mysql -h hadoop1 -uroot -P 9030
#添加broker
mysql> 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 语句
[root@hadoop1 ~]# mysql -h hadoop1 -uroot -P 9030
在这里插入图片描述
(2)创建测试表,在 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界面如下所示。
在这里插入图片描述

### 在 Kubernetes 上部署 Apache Doris 集群的最佳实践 #### 1. 使用 Operator 方式部署 Doris 集群 为了简化在 Kubernetes 环境中的部署流程,推荐使用 `doris-operator` 来完成自动化配置和管理。以下是具体的操作步骤: - **准备环境** 创建一个支持 Turbo 类型的华为云 Kubernetes 集群作为基础运行平台[^2]。 - **应用资源配置文件** 执行以下命令依次加载必要的 YAML 文件以定义 Frontend (FE) 和 Backend (BE) 的服务配置: ```bash kubectl apply -f doris-cluster-fe-conf.yaml -n opsxlab kubectl apply -f doris-cluster-be-conf.yaml -n opsxlab ``` - **验证资源状态** 完成上述操作后,可通过以下命令确认各组件的状态是否正常: ```bash kubectl get pods -n opsxlab ``` #### 2. 构建并启动 Doris 集群实例 进一步按照官方文档说明构建完整的集群架构,涉及多个子模块的协同工作: - **创建持久化存储卷声明** ```bash kubectl apply -f doris-fe-pv.yaml kubectl apply -f doris-be-pv.yaml ``` - **初始化 StatefulSet 及自定义资源对象** 下列指令用于设置前端与后端节点的服务编排以及绑定至指定命名空间下的逻辑单元: ```bash kubectl apply -f doris-fe-st.yaml kubectl apply -f doris-be-st.yaml kubectl apply -f operator.yaml -n doris kubectl apply -f doriscluster.yaml -n doris ``` 这些脚本共同作用下实现了高可用性和弹性伸缩能力的目标[^3]。 #### 3. 替代方案——手动安装方法概述 如果倾向于传统手段而非依赖第三方工具,则需自行下载二进制包并提取到目标目录中去执行相应程序版本号替换实际获取链接地址部分即可满足需求示例如下所示: ```bash cd /root/doris/ wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.1.7-bin-x64.tar.gz tar -xvf apache-doris-2.1.7-bin-x64.tar.gz ``` 此过程适用于不具备现成镜像仓库访问权限或者希望完全掌控整个生命周期的情况之下选用的手动方式[^5]。 --- ### 注意事项 尽管存在多种途径可供选择,在生产环境中建议优先考虑基于Operator的方式来进行大规模分布式系统的维护管理工作因为其具备更高的稳定性和便捷程度同时还能减少人为失误带来的风险因素影响整体性能表现水平达到最优效果[^1].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俊哥大数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值