首页 > 其他分享 >【亲测可用】Doris3.x分布式集群安装部署

【亲测可用】Doris3.x分布式集群安装部署

时间:2024-12-06 18:33:10浏览次数:5  
标签:Doris3 hadoop fe hadoop1 亲测 root 节点 Doris 分布式

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界面如下所示。
在这里插入图片描述

标签:Doris3,hadoop,fe,hadoop1,亲测,root,节点,Doris,分布式
From: https://blog.csdn.net/yangjun_1985/article/details/144276644

相关文章

  • HarmonyOS Next 分布式加密协作应用案例剖析
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在分布式加密协作应用中的应用,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。第一章:应用场景与架......
  • 13.SpringCloudSeata处理分布式事务
    分布式事务(引入)面试题你简历上写用微服务boot/cloud做过项目,你不可能只有一个数据库吧?请你谈谈多个数据库之间,你如何处理分布式事务?举例:在订单支付成功后,交易中心会调用订单中心的服务把订单状态更新,并调用物流中心的服务通知商品发货,同时还要调用积分中心的服务为用户增加相......
  • 电商项目--分布式文件存储FastDFS搭建
    一、FastDFS环境搭建我们使用Docker搭建FastDFS的开发环境(1)拉取镜像dockerpullmorunchang/fastdfs (2)运行trackerdockerrun-d--nametracker--net=hostmorunchang/fastdfsshtracker.sh(3)运行storagedockerrun-d--namestorage--net=host-eTRACKER_......
  • 基于vpk180边缘场景下分布式神经网络训练模型部署
    本项目目标在于针对边缘场景实现P2P的分布式训练过程,设计方案为将神经网络训练过程对应的裸机程序部署在了PS端的ARMCortex-A72核上,传输方案采用开发板板载的GTM收发器硬件资源通过外部QSFP-DD光模块光传输至对端,最终完成了设计目标。整个项目的实现细节可分为如下几个重......
  • 电商项目--分布式文件存储FastDFS简介
    对于大型互联网类型项目,其内部存在非常多的文件,会存在图片文档报表等文件。采用传统方式存储在机器磁盘上,其容量无法支撑这些文件,需要考虑分布式文件系统。一、FastDFS简介FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同......
  • etcd分布式存储系统快速入门指南
    在分布式系统的复杂世界中,确保有效的数据管理至关重要。分布式可靠的键值存储在维护跨分布式环境的数据一致性和可伸缩性方面起着关键作用。在这个全面的教程中,我们将深入研究etcd,这是一个开源的分布式键值存储。我们将探索其基本概念、特性和用例,并提供一个动手快速入......
  • java实现Word转Pdf,亲测可用
    一、引入maven包,如果包引不进来下载jar包:https://pan.baidu.com/s/1sr3AdE2QWPN7rM-JwWnF2w?pwd=6xgf提取码:6xgf<dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8.0</version><......
  • PhpStorm 2024.3 安装激活使用教程(激活至2099年,亲测有效)
    PhpStorm简介PhpStorm是一款非常强大的php集成开发环境(IDE),由JetBrains公司开发。它提供了丰富的功能和工具,帮助开发者更高效地编写、调试和部署代码。要求在开始之前,请确保您的计算机满足以下系统要求:操作系统:Windows、macOS或Linux处理器:至少1GHz的处理器内存:至少2......
  • 【分布式技术】一文讲透链路追踪
    链路追踪详细讲解概述一、定义与核心思想二、关键概念三、实现方式四、应用场景五、常用工具六、发展趋势与挑战设计原型Dapper一、基本概念与原理二、主要功能三、使用步骤四、系统特点五、应用场景六、优势与挑战什么是MDC一、MDC的基本用法二、在日志配置文件中使用......
  • HarmonyOS Next 分布式加密协作应用案例剖析
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在分布式加密协作应用中的应用,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。第一章:应用场景与架......