[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
在部署 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
sudo systemctl start ntpd.service
sudo systemctl enable ntpd.service
###下载地址,安装过程省略
https://jdk.java.net/archive/
不是存算分离架构。下面是部署过程。 1.部署 FE Master 节点:部署第一个 FE 节点作为 Master 节点; 2.部署 FE 集群:部署 FE 集群,添加 Follower 或 Observer FE 节点; 3.部署 BE 节点:向 FE 集群中注册 BE 节点; 4.验证集群正确性:部署完成后连接并验证集群正确性。
[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,密码:默认无密码
[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
[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机器也这么添加
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 |
+------+-------+------+------+
生产环境建议至少部署 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