others linux服务器运维 django3 监控 k8s golang 数据库 大数据 前端 devops 理论基础 java oracle 运维日志

doris 存算一体化集群手动安装

访问量:25 创建时间:2025-11-14

操作系统检查

关闭 swap 分区

[root@os1 data]# swapoff -a

永久关闭,使用 Linux root 账户,注释掉 /etc/fstab 中的 swap 分区,重启即可彻底关闭 swap 分区

关闭系统透明大页

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

如果需要永久关闭透明大页,可以使用以下命令,在下一次宿主机重启后生效:

cat >> /etc/rc.d/rc.local << EOF
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
EOF
chmod +x /etc/rc.d/rc.local

增加虚拟内存区域

为了保证 Doris 有足够的内存映射区域来处理大量数据,需要修改 VMA(虚拟内存区域)。如果没有足够的内存映射区域,Doris 在启动或运行时可能会遇到 Too many open files 或类似的错误。

通过以下命令可以永久修改虚拟内存区域至少为 2000000,并立即生效:

cat >> /etc/sysctl.conf << EOF
vm.max_map_count = 2000000
EOF

# Take effect immediately
sysctl -p

禁用 CPU 省电模式

在部署 Doris 时检修关闭 CPU 的省电模式,以确保 Doris 在高负载时提供稳定的高性能,避免由于 CPU 频率降低导致的性能波动、响应延迟和系统瓶颈,提高 Doris 的可靠性和吞吐量。如果您的 CPU 不支持 Scaling Governor,可以跳过此项配置。

通过以下命令可以关闭 CPU 省电模式:

# 也可以在系统层面进行设置,配置方法如下:
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n performance > $CPUFREQ; done 

网络连接溢出时自动重置新连接

在部署 Doris 时,需要确保在 TCP 连接的发送缓冲区溢出时,连接会被立即中断,以防止 Doris 在高负载或高并发情况下出现缓冲区阻塞,避免连接被长时间挂起,从而提高系统的响应性和稳定性。

通过以下命令可以永久设置系统自动重置新链接,并立即生效:

cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_abort_on_overflow=1
EOF

# Take effect immediately
sysctl -p

相关端口畅通-关闭防火墙

如果发现端口不通,可以试着关闭防火墙,确认是否是本机防火墙造成。如果是防火墙造成,可以根据配置的 Doris 各组件端口打开相应的端口通信。

sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

增加系统的最大文件句柄数

Doris 由于依赖大量文件来管理表数据,所以需要将系统对程序打开文件数的限制调高。

通过以下命令可以调整最大文件句柄数。在调整后,需要重启会话以生效配置:

vi /etc/security/limits.conf 
* soft nofile 1000000
* hard nofile 1000000

安装并配置 NTP 服务

sudo systemctl start ntpd.service
sudo systemctl enable ntpd.service

openjdk17安装

###下载地址,安装过程省略
https://jdk.java.net/archive/

部署doris存算一体集群架构

不是存算分离架构。下面是部署过程。 1.部署 FE Master 节点:部署第一个 FE 节点作为 Master 节点; 2.部署 FE 集群:部署 FE 集群,添加 Follower 或 Observer FE 节点; 3.部署 BE 节点:向 FE 集群中注册 BE 节点; 4.验证集群正确性:部署完成后连接并验证集群正确性。

FE部署

[root@os1 data]# cd /data
[root@os1 data]# tar xf apache-doris-2.1.11-bin-x64-noavx2.tar.gz
[root@os1 data]# cd apache-doris-2.1.11-bin-x64-noavx2/fe/conf/
[root@os1 conf]# ll
total 12
-rw-r--r-- 1 root root 4156 Aug 11 14:30 fe.conf
-rw-r--r-- 1 root root 2627 Aug 11 14:30 ldap.conf
drwxr-xr-x 2 root root    6 Aug 11 14:30 ssl
[root@os1 conf]# vim fe.conf 
#元数据目录
meta_dir = /data/doris-meta
#设置fe的ip地址
priority_networks = 192.168.72.0/24

[root@os1 conf]# mkdir -pv  /data/doris-meta
mkdir: created directory ‘/data/doris-meta’

##启动fe
[root@os1 conf]# cd ..
[root@os1 fe]# pwd
/data/apache-doris-2.1.11-bin-x64-noavx2/fe
###机器至少8G内存可以启动,如果自己测试改小xmx等参数
[root@os1 fe]# ./bin/start_fe.sh --daemon
[root@os1 fe]# ps uax | grep fe
root         66  0.0  0.0      0     0 ?        S<   14:39   0:00 [deferwq]
root      20217  153  8.3 8265024 670880 pts/0  Sl   16:02   0:12 /data/jdk-17/bin/java -Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -XX:+UseG1GC -Xmx5120m -Xms5120m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/apache-doris-2.1.11-bin-x64-noavx2/fe/log/ -Xlog:gc*,classhisto*=trace:/data/apache-doris-2.1.11-bin-x64-noavx2/fe/log/fe.gc.log.20251114-160256:time -XX:-OmitStackTraceInFastThrow -XX:OnOutOfMemoryError=kill -9 %p org.apache.doris.DorisFE
root      20400  0.0  0.0 112808   976 pts/0    R+   16:03   0:00 grep --color=auto fe
[root@os1 fe]# netstat -tunlp | grep 20217
tcp        0      0 0.0.0.0:9030            0.0.0.0:*               LISTEN      20217/java          
tcp        0      0 192.168.72.107:9010     0.0.0.0:*               LISTEN      20217/java          
tcp        0      0 0.0.0.0:9020            0.0.0.0:*               LISTEN      20217/java          
tcp        0      0 0.0.0.0:8030            0.0.0.0:*               LISTEN      20217/java 
###验证fe是否部署成功,mysql命令可以在本机安装yum install mariadb获取
[root@os1 fe]# mysql -uroot -P9030  -h os1
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 0
Server version: 5.7.99

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

######默认 root 无密码,通过以下命令修改 root 密码。
SET PASSWORD FOR 'root' = PASSWORD('root');
###fe的web访问
访问ip:8030, 账户root,密码:默认无密码

BE部署

[root@os1 fe]# cd /data/apache-doris-2.1.11-bin-x64-noavx2/be/conf/
[root@os1 conf]# vim be.conf 
###JAVA_HOME=/jdk/path 根据自己配置设置或者不配置
priority_networks = 192.168.72.0/24
storage_root_path = /data/storage1

#####启动be
[root@os1 be]# ./bin/start_be.sh --daemon
[root@os1 be]# jps
25490 DorisBE
27444 Jps
20217 DorisFE
[root@os1 be]# ps aux | grep be
root      25490 10.5  8.4 9650060 676540 pts/0  Sl   16:30   0:06 /data/apache-doris-2.1.11-bin-x64-noavx2/be/lib/doris_be
root      27469  0.0  0.0 112808   976 pts/0    S+   16:31   0:00 grep --color=auto be
[root@os1 be]# netstat -tunlp | grep 25490
tcp        0      0 0.0.0.0:8040            0.0.0.0:*               LISTEN      25490/doris_be      
tcp        0      0 0.0.0.0:9050            0.0.0.0:*               LISTEN      25490/doris_be      
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      25490/doris_be      
tcp        0      0 0.0.0.0:9060            0.0.0.0:*               LISTEN      25490/doris_be    

在FE中添加BE

[root@os1 be]# mysql -uroot -proot -P9030  -h os1 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.99

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> ALTER SYSTEM ADD BACKEND "os1:9050";
Query OK, 0 rows affected (0.05 sec)

MySQL [(none)]> show proc '/backends'\G
*************************** 1. row ***************************
              BackendId: 10374
                   Host: os1
          HeartbeatPort: 9050
                 BePort: 9060
               HttpPort: 8040
               BrpcPort: 8060
     ArrowFlightSqlPort: -1
          LastStartTime: 2025-11-14 16:30:54
          LastHeartbeat: 2025-11-14 16:34:15
                  Alive: true
   SystemDecommissioned: false
              TabletNum: 22
       DataUsedCapacity: 0.000 
      TrashUsedCapacity: 0.000 
          AvailCapacity: 27.893 GB
          TotalCapacity: 38.278 GB
                UsedPct: 27.13 %
         MaxDiskUsedPct: 27.13 %
     RemoteUsedCapacity: 0.000 
                    Tag: {"location" : "default"}
                 ErrMsg: 
                Version: doris-2.1.11-rc01-97b77e6cda
                 Status: {"lastSuccessReportTabletsTime":"2025-11-14 16:34:20","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
               NodeRole: mix
1 row in set (0.03 sec)

###其他BE机器也这么添加

登录web查看集群信息

http://192.168.72.107:8030/login

System-->backends等等

FE添加节点命令

ALTER SYSTEM ADD FOLLOWER "hostname:9010";
ALTER SYSTEM ADD OBSERVER "hostname:9010";

FE删除节点

ALTER SYSTEM DROP FOLLOWER  "fe_host:edit_log_port";
ALTER SYSTEM DROP OBSERVER   "fe_host:edit_log_port";

DECOMMISSION 方式删除 BE 节点(推荐)

ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
#例如
ALTER SYSTEM DECOMMISSION BACKEND "hb1:9050"

该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。 该命令是一个异步操作。执行后,可以通过 SHOW PROC ‘/backends’; 看到该 BE节点的 isDecommission 状态为 true。表示该节点正在进行下线。 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于isDecommission 为 true 的状态。 DECOMMISSION 的进度,可以通过 SHOW PROC ‘/backends’; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。 该操作可以通过如下命令取消:

CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

#例如
CANCEL DECOMMISSION BACKEND "hb1:9050"

DROP方式删除BE节点(不建议)

注意:DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!!所以我们强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。当你使用这个语句时,有对应的防误操作提示。

ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";
#例如
ALTER SYSTEM DROP BACKEND "hb1:9050"

验证集群正确性

###登录数据库,使用 MySQL 客户端登录 Doris 集群。
## connect a alive fe node
mysql -uroot -P<fe_query_port> -h<fe_ip_address>
### 检查 Doris 安装信息
### 通过 show frontends 与 show backends 可以查看数据库各实例的信息。
-- check fe status
show frontends \G

-- check be status
show backends \G
### 修改 Doris 集群密码
###在创建 Doris 集群时,系统会自动创建一个名为 root 的用户,并默认设置其密码为空。为了提高安全性,建议在集群创建后立即为 root 用户设置一个新密码
-- check the current user
select user();  
+------------------------+  
| user()                 |  
+------------------------+  
| 'root'@'192.168.88.30' |  
+------------------------+  

-- modify the password for current user
SET PASSWORD = PASSWORD('doris_new_passwd');

### 创建测试表并插入数据,为了验证集群的正确性,可以在新创建的集群中创建一个测试表,并插入测试数据。

-- create a test database
create database testdb;

-- create a test 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;

### oris 兼容 MySQL 协议,可以使用 INSERT 语句插入数据。
-- insert data
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);

-- check the data
SELECT * from testdb.table_hash;
+------+-------+------+------+
| k1   | k2    | k3   | k4   |
+------+-------+------+------+
|    3 | 10.30 | CCC  |   30 |
|    4 | 10.40 | DDD  |   40 |
|    5 | 10.50 | EEE  |   50 |
|    1 | 10.10 | AAA  |   10 |
|    2 | 10.20 | BBB  |   20 |
+------+-------+------+------+

部署FE集群

生产环境建议至少部署 3 个节点。在部署过 FE Master 节点后,需要再部署两个 FE Follower 节点。

创建元数据目录

参考部署 FE Master 节点,创建 doris-meta 目录

修改 FE Follower 节点配置文件

参考部署 FE Master 节点,修改 FE Follower 节点配置文件。通常情况下,可以直接复制 FE Master 节点的配置文件。

在 Doris 集群中注册新的 FE Follower 节点

在启动新的 FE 节点前,需要先在 FE 集群中注册新的 FE 节点。

MySQL [(none)]> ALTER SYSTEM ADD FOLLOWER "192.168.72.108:9010";
Query OK, 0 rows affected (0.01 sec)

MySQL [(none)]> ALTER SYSTEM ADD FOLLOWER "192.168.72.109:9010";
Query OK, 0 rows affected (0.02 sec)


MySQL [(none)]> show proc '/frontends' \G
*************************** 1. row ***************************
              Name: fe_0346d0ff_ab01_43c5_b687_f08396c178d0
              Host: 192.168.72.108
       EditLogPort: 9010
          HttpPort: 8030
         QueryPort: 0
           RpcPort: 0
ArrowFlightSqlPort: 0
              Role: FOLLOWER
          IsMaster: false
         ClusterId: 1127105030
              Join: false
             Alive: false
 ReplayedJournalId: 0
     LastStartTime: NULL
     LastHeartbeat: NULL
          IsHelper: true
            ErrMsg: java.net.ConnectException: Connection refused
           Version: NULL
  CurrentConnected: No
*************************** 2. row ***************************
              Name: fe_785f3e48_937f_44e1_9036_6ac3898f2481
              Host: 192.168.72.107
       EditLogPort: 9010
          HttpPort: 8030
         QueryPort: 9030
           RpcPort: 9020
ArrowFlightSqlPort: -1
              Role: FOLLOWER
          IsMaster: true
         ClusterId: 1127105030
              Join: true
             Alive: true
 ReplayedJournalId: 1038
     LastStartTime: 2025-11-14 16:03:02
     LastHeartbeat: 2025-11-14 17:19:57
          IsHelper: true
            ErrMsg: 
           Version: doris-2.1.11-rc01-97b77e6cda
  CurrentConnected: Yes
*************************** 3. row ***************************
              Name: fe_c5b9121b_31a4_44d8_9f07_2995132d024a
              Host: 192.168.72.109
       EditLogPort: 9010
          HttpPort: 8030
         QueryPort: 0
           RpcPort: 0
ArrowFlightSqlPort: 0
              Role: FOLLOWER
          IsMaster: false
         ClusterId: 1127105030
              Join: false
             Alive: false
 ReplayedJournalId: 0
     LastStartTime: NULL
     LastHeartbeat: NULL
          IsHelper: true
            ErrMsg: java.net.ConnectException: Connection refused
           Version: NULL
  CurrentConnected: No
3 rows in set (0.07 sec)

###如果要添加 observer 节点,可以使用 ADD OBSERVER 命令
## register a new FE observer node
ALTER SYSTEM ADD OBSERVER "<fe_ip_address>:<fe_edit_log_port>"
##  FE Follower(包括 Master)节点的数量建议为奇数,建议部署 3 个组成高可用模式。
##  当 FE 处于高可用部署时(1 个 Master,2 个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力

## 启动 FE Follower 节点,通过以下命令,可以启动 FE Follower 节点,并自动同步元数据

bin/start_fe.sh --helper <helper_fe_ip>:<fe_edit_log_port> --daemon

其中,helper_fe_ip 是 FE 集群中任何存活节点的 IP 地址。--helper 参数仅在第一次启动 FE 时需要,之后重启无需指定。

判断 Follower 节点状态

与 FE Master 节点状态判断相同,添加 Follower 节点后,可通过 show frontends 命令查看节点状态,IsMaster 应为 false

doris也可以通过doris-manager 部署管理,具体参考selectdb.com

登陆评论: 使用GITHUB登陆