1、安装基础工具
因为是重装系统的机器,要从安装基础软件开始,包括vim,netstat,ifconfig等,方便各种检测软件硬件条件需要。其中遇到的问题是,yum安装不了的问题,解决方法是:
找到/etc/yum.repos.d/CentOS-Base.repo,然后备份一下
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
然后重新编辑,从yum安装正常的系统复制/etc/yum.repos.d/CentOS-Base.repo文件过来保存即可
2、安装jdk
2.1、准备好jdk安装包
这里使用Doris官网推荐的jdk-8u202-linux-x64.tar.gz。
2.2、解压安装
mkdir -p /usr/java/jdk
mv /opt/jdk-8u202-linux-x64.tar.gz /usr/java/jdk/
cd /usr/java/jdk/
tar -zxvf jdk-8u202-linux-x64.tar.gz
vim /etc/profile
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
:wq
source /etc/profile
2.3、确认Java版本
执行 java -version确认Java是否安装成功,执行命令,得到如下结果即成功:
[root@crmdb2 ~]# java -version
java version “1.8.0_202”
Java™ SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot™ 64-Bit Server VM (build 25.202-b08, mixed mode)
3、手动部署Doris集群
3.1、软硬件环境检查
每台机器都要检查
3.1.1、cpu检查
cat /proc/cpuinfo | grep avx2
3.1.2、内存检查
[root@localhost network-scripts]# free -m
total used free shared buff/cache available
Mem: 96130 6121 78752 10 11255 89450
Swap: 0 0 0
3.1.3、存储空间检查
[root@localhost network-scripts]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 47G 0 47G 0% /dev
tmpfs 47G 0 47G 0% /dev/shm
tmpfs 47G 11M 47G 1% /run
tmpfs 47G 0 47G 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 13G 38G 26% /
/dev/sda2 1016M 143M 874M 15% /boot
/dev/sda1 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home 7.3T 114M 7.3T 1% /home
tmpfs 9.4G 0 9.4G 0% /run/user/0
3.1.4、文件系统检查
[root@localhost network-scripts]# mount |grep home
/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,sunit=512,swidth=1024,noquota)
可以看到文件系统为 xfs,满足官网要求。
3.1.5、网卡检查
[root@localhost network-scripts]# lshw -class network
*-network:0
.....
size: 1Gbit/s
capacity: 1Gbit/s
...
speed=1Gbit/s
...
*-network:1
...
capacity: 1Gbit/s
width: 64 bits
...
可以看到我的网卡不是万兆网卡,但是我是开发环境,所以不纠结,先用着。
3.2、操作系统检查
3.2.1、关闭swap分区
编辑 /etc/fstab,注释掉swap的行,然后重启服务器
[root@localhost network-scripts]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jul 16 15:40:36 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=451bb932-6a28-4d6f-a7cf-b54acfb01415 /boot xfs defaults 0 0
UUID=3F34-B4F1 /boot/efi vfat umask=0077,shortname=winnt 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
#/dev/mapper/centos-swap swap swap defaults 0 0
[root@localhost network-scripts]# reboot
3.2.2、关闭系统防火墙
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
3.2.3、配置 NTP 服务
yum install ntp -y
sudo systemctl start ntpd.service
sudo systemctl enable ntpd.service
3.2.4、设置系统最大打开文件句柄数
echo "* soft nofile 1000000" >> /etc/security/limits.conf
echo "* hard nofile 1000000" >> /etc/security/limits.conf
3.2.5、修改虚拟内存区域数量
sysctl -w vm.max_map_count=2000000
3.2.6、关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
3.3、集群规划
3台物理机,混合部署3节点FE、3节点BE,具体IP如下:
192.168.xx.126【FE MASTER]
192.168.xx.127
192.168.xx.128
3.4、安装集群
3.4.1、部署 FE Master 节点
FE存储目录:
mkdir -p /home/doris/fe
准备Doris二进制安装包,并上传到/opt,我使用的是当前最新版本apache-doris-2.1.4-bin-x64.tar.gz
然后开始安装FE Master节点
第一步:解压软件包
cd /opt
tar -zxvf apache-doris-2.1.4-bin-x64.tar.gz
mv apache-doris-2.1.4-bin-x64 apache-doris
cd apache-doris/fe/conf
第二步:修改配置
vim fe.conf
修改:JAVA_OPTS 的 -Xmx16384m
修改:meta_dir = /home/doris/fe
修改:priority_networks = 192.168.23.0/24
保存退出
第三步:启动FE
./bin/start_fe.sh --daemon
第四步:检查FE启动状态
先登录FE,初次登录使用root账号,密码空
/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h192.168.xx.126
查看状态命令:
show frontends\G
mysql> show frontends\G
*************************** 1. row ***************************
Name: fe_650dc407_537e_49a2_b926_57937e56cab0
Host: 192.168.xx.126
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
ArrowFlightSqlPort: -1
Role: FOLLOWER
IsMaster: true
ClusterId: 1213843435
Join: true
Alive: true
ReplayedJournalId: 171
LastStartTime: 2024-07-17 13:35:44
LastHeartbeat: 2024-07-17 13:49:05
IsHelper: true
ErrMsg:
Version: doris-2.1.4-rc03-e93678fd1e
CurrentConnected: Yes
1 row in set (5.10 sec)
看到如上信息,重点关注 Alive: true,表示正常。
3.4.2、部署 FE 集群
安装了FE master后,为了高可用,还要安装2个节点FE,安装第一步、第二步跟master的安装相同。第三步 启动FE之前,要先在刚安装好的FE master节点上注册新的FE节点,注册命令为:
ALTER SYSTEM ADD FOLLOWER "192.168.xx.127:9010";
ALTER SYSTEM ADD FOLLOWER "192.168.xx.128:9010";
第三步:启动FE FOLLOWER节点,初次启动的命令为:
cd /opt/apache-doris/fe
./bin/start_fe.sh --helper 192.168.xx.126:9010 --daemon
后续启动命令:
./bin/start_fe.sh --daemon
第四步:检查启动状态
mysql> show frontends\G
*************************** 1. row ***************************
Name: fe_650dc407_537e_49a2_b926_57937e56cab0
Host: 192.168.xx.126
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
ArrowFlightSqlPort: -1
Role: FOLLOWER
IsMaster: true
ClusterId: 1213843435
Join: true
Alive: true
ReplayedJournalId: 1244
LastStartTime: 2024-07-17 13:35:44
LastHeartbeat: 2024-07-17 15:18:17
IsHelper: true
ErrMsg:
Version: doris-2.1.4-rc03-e93678fd1e
CurrentConnected: Yes
*************************** 2. row ***************************
Name: fe_75b02626_764c_4464_999c_9ec5387c25c6
Host: 192.168.xx.127
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
ArrowFlightSqlPort: -1
Role: FOLLOWER
IsMaster: false
ClusterId: 1213843435
Join: true
Alive: true
ReplayedJournalId: 1243
LastStartTime: 2024-07-17 14:12:20
LastHeartbeat: 2024-07-17 15:18:17
IsHelper: true
ErrMsg:
Version: doris-2.1.4-rc03-e93678fd1e
CurrentConnected: No
*************************** 3. row ***************************
Name: fe_60609b3b_f9f3_4ecb_9b66_ec861be62d53
Host: 192.168.xx.128
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
ArrowFlightSqlPort: -1
Role: FOLLOWER
IsMaster: false
ClusterId: 1213843435
Join: true
Alive: true
ReplayedJournalId: 1245
LastStartTime: 2024-07-17 15:12:47
LastHeartbeat: 2024-07-17 15:18:27
IsHelper: true
ErrMsg:
Version: doris-2.1.4-rc03-e93678fd1e
CurrentConnected: No
3 rows in set (15.05 sec)
看到如上状态,表示3个节点都安装完,状态都正常!
3.4.3、部署 BE
第一步:修改be.conf配置文件
修改:JAVA_HOME=/usr/java/jdk/jdk1.8.0_202
修改:priority_networks = 192.168.xx.0/24
修改:storage_root_path = /home/doris/be
第二步:在23.126上注册be节点
ALTER SYSTEM ADD BACKEND "192.168.xx.126:9050";
ALTER SYSTEM ADD BACKEND "192.168.xx.127:9050";
ALTER SYSTEM ADD BACKEND "192.168.xx.128:9050";
第三步:启动BE
ulimit -n 60000
./bin/start_be.sh --daemon
第三步:检查状态
mysql> show backends\G
*************************** 1. row ***************************
BackendId: 11368
Host: 192.168.xx.126
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
ArrowFlightSqlPort: -1
LastStartTime: 2024-07-17 15:30:46
LastHeartbeat: 2024-07-17 15:42:58
Alive: true
SystemDecommissioned: false
TabletNum: 14
DataUsedCapacity: 0.000
TrashUsedCapacity: 16.261 KB
AvailCapacity: 7.220 TB
TotalCapacity: 7.220 TB
UsedPct: 0.00 %
MaxDiskUsedPct: 0.00 %
RemoteUsedCapacity: 0.000
Tag: {"location" : "default"}
ErrMsg:
Version: doris-2.1.4-rc03-e93678fd1e
Status: {"lastSuccessReportTabletsTime":"2024-07-17 15:42:21","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
NodeRole: mix
*************************** 2. row ***************************
BackendId: 11660
Host: 192.168.xx.127
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
ArrowFlightSqlPort: -1
LastStartTime: 2024-07-17 15:34:30
LastHeartbeat: 2024-07-17 15:42:58
Alive: true
SystemDecommissioned: false
TabletNum: 8
DataUsedCapacity: 0.000
TrashUsedCapacity: 5.866 KB
AvailCapacity: 3.440 TB
TotalCapacity: 3.440 TB
UsedPct: 0.00 %
MaxDiskUsedPct: 0.00 %
RemoteUsedCapacity: 0.000
Tag: {"location" : "default"}
ErrMsg:
Version: doris-2.1.4-rc03-e93678fd1e
Status: {"lastSuccessReportTabletsTime":"2024-07-17 15:43:00","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
NodeRole: mix
*************************** 3. row ***************************
BackendId: 11675
Host: 192.168.xx.128
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
ArrowFlightSqlPort: -1
LastStartTime: 2024-07-17 15:42:49
LastHeartbeat: 2024-07-17 15:42:58
Alive: true
SystemDecommissioned: false
TabletNum: 0
DataUsedCapacity: 0.000
TrashUsedCapacity: 0.000
AvailCapacity: 1.000 B
TotalCapacity: 0.000
UsedPct: 0.00 %
MaxDiskUsedPct: 0.00 %
RemoteUsedCapacity: 0.000
Tag: {"location" : "default"}
ErrMsg:
Version: doris-2.1.4-rc03-e93678fd1e
Status: {"lastSuccessReportTabletsTime":"N/A","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
NodeRole: mix
3 rows in set (0.00 sec)
看到如上信息,表示3个BE节点安装完成,状态都正常!
3.5、验证测试
登录126并创建数据库,创建数据表,插入数据,查询数据
/opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h192.168.xx.126
mysql>
mysql> select user();
+-------------------------+
| user() |
+-------------------------+
| 'root'@'192.168.xx.126' |
+-------------------------+
1 row in set (0.04 sec)
# 创建数据库
mysql> create database testdb;
Query OK, 0 rows affected (0.01 sec)
# 创建表
mysql> 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;
Query OK, 0 rows affected (0.05 sec)
# 查看表列表
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| table_hash |
+------------------+
1 row in set (0.00 sec)
# 插入数据
mysql> 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);
Query OK, 5 rows affected (0.23 sec)
{'label':'label_fc6a6abf956e44a3_8bad87c662f2c2b7', 'status':'VISIBLE', 'txnId':'44'}
# 查询数据
mysql> SELECT * from testdb.table_hash;
+------+-------+------+------+
| k1 | k2 | k3 | k4 |
+------+-------+------+------+
| 5 | 10.50 | EEE | 50 |
| 3 | 10.30 | CCC | 30 |
| 1 | 10.10 | AAA | 10 |
| 2 | 10.20 | BBB | 20 |
| 4 | 10.40 | DDD | 40 |
+------+-------+------+------+
5 rows in set (0.15 sec)
3.6、远程连接
部署好后,通过任意FE节点,都能连接Doris,都能操作数据库,进行DML数据操作,每个节点操作的效果都同步到其他节点。
连接效果:

数据操作:



4、密码设置
前面部署FE后,默认有root和admin两个账号,默认密码为空,这是不安全的,需要登录FE,并设置密码,设置密码的命令如下:
SET PASSWORD FOR 'root' = PASSWORD('你的root密码');
SET PASSWORD FOR 'admin' = PASSWORD('你的admind密码');
5、web控制台
Doris内置了web控制台,可以进行简单的数据查询等操作,但是不太完善,基本还是通过DBeaver等客户端连接Doris进行操作更好!
登录的账号root或admin和你设置的密码,可以简单操作数据库的界面如下:

到此,Doris集群的3节点混合部署完成!




