Apache Doris 4.0.0 存算分离手动部署指南

以下是根据您提供的文档整理而成的部署文章,已替换 IP 地址为 172.16.10.110、172.16.10.111、172.16.10.112,并优化了结构和可读性。


Apache Doris 4.0.0 存算分离手动部署指南

一、准备工作

环境要求

  • 3 台以上服务器(奇数台)
  • 根据业务规模调整 CPU 和内存
  • 除修改机器名外,其他命令需在所有服务器上执行

1. 修改机器名

bash 复制代码
# node1
sudo hostnamectl set-hostname doris-node1

# node2
sudo hostnamectl set-hostname doris-node2

# node3
sudo hostnamectl set-hostname doris-node3

2. 基础配置

bash 复制代码
# 检查时钟同步
sudo systemctl status chronyd

# 安装 lsof
sudo yum install -y lsof

# 关闭防火墙
sudo systemctl disable firewalld.service

# 禁用透明大页(THP)
echo "echo madvise > /sys/kernel/mm/transparent_hugepage/enabled" | sudo tee -a /etc/rc.local

# 禁用大页
sudo sysctl vm.nr_hugepages=0

3. 修改 /etc/sysctl.conf

ini 复制代码
vm.max_map_count = 2000000
net.ipv4.tcp_abort_on_overflow = 1
fs.file-max = 1000000

立即生效:

bash 复制代码
sudo sysctl -p

4. 修改 /etc/security/limits.conf

ini 复制代码
*          soft     nofile      1000000
*          hard     nofile      1000000
root       soft     nofile      1000000
root       hard     nofile      1000000

5. 安装 Java 17

bash 复制代码
sudo yum install -y java-17-openjdk java-17-openjdk-devel

sudo tee /etc/profile.d/doris_java.sh << EOF
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=\$JAVA_HOME/bin:\$PATH
EOF

source /etc/profile.d/doris_java.sh
sudo sh -c 'echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk" >> /etc/environment'
java -version

6. 数据盘挂载

FE 节点(所有节点)
bash 复制代码
sudo mkfs.xfs /dev/nvme1n1
sudo mkdir -p /data/doris-fe
sudo mount /dev/nvme1n1 /data/doris-fe
echo '/dev/nvme1n1 /data/doris-fe xfs defaults 0 0' | sudo tee -a /etc/fstab
BE 节点(所有节点)
bash 复制代码
sudo mkfs.xfs /dev/nvme2n1
sudo mkdir -p /data/doris-be
sudo mount /dev/nvme2n1 /data/doris-be
echo '/dev/nvme2n1 /data/doris-be xfs defaults 0 0' | sudo tee -a /etc/fstab
bash 复制代码
sudo systemctl daemon-reload

7. 创建 doris 用户

bash 复制代码
sudo groupadd doris
sudo useradd -g doris -M -s /sbin/nologin doris

8. 设置目录权限

bash 复制代码
sudo chown -R doris:doris /data/doris-fe /data/doris-be
sudo chmod 755 /data/doris-fe /data/doris-be

二、安装 Doris

1. 下载与解压

bash 复制代码
cd /opt
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-4.0.0-bin-x64.tar.gz
tar -zxvf apache-doris-4.0.0-bin-x64.tar.gz
mv apache-doris-4.0.0-bin-x64 doris-4.0.0

wget http://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-3.0.2-tools.tar.gz
tar -zxvf apache-doris-3.0.2-tools.tar.gz
mv tools/fdb/pkgs doris-4.0.0/tools/fdb

2. 安装 FoundationDB

bash 复制代码
mkdir /opt/foundationdb

编辑 /opt/doris-4.0.0/tools/fdb/fdb_vars.sh:

bash 复制代码
DATA_DIRS="/data/doris-fe/foundationdb"
FDB_CLUSTER_IPS="172.16.10.110,172.16.10.111,172.16.10.112"
FDB_HOME="/opt/foundationdb"
FDB_CLUSTER_ID="fdbserver"
FDB_CLUSTER_DESC="dorisfdb"
MEMORY_LIMIT_GB=6
CPU_CORES_LIMIT=2
USER="doris"
STORAGE_STATELESS_LOG_RATIO="1:1:1"
STORAGE_PROCESSES_NUM_PER_SSD=2
LOG_PROCESSES_NUM_PER_SSD=2
MEMORY_STORAGE_GB=4
MEMORY_STATELESS_GB=1
MEMORY_LOG_GB=1

部署 FDB 集群:

bash 复制代码
/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh deploy

设置权限:

bash 复制代码
sudo chown -R doris:doris /opt/foundationdb
sudo chown -R doris:doris /data/doris-fe/foundationdb
sudo chmod -R 750 /opt/foundationdb

创建 systemd 服务 /etc/systemd/system/doris-fdb.service:

ini 复制代码
[Unit]
Description=Doris FoundationDB Controller
After=network.target

[Service]
User=doris
Group=doris
Type=forking
WorkingDirectory=/opt/doris-4.0.0/tools/fdb
ExecStart=/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh start
ExecStop=/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh stop
Restart=on-failure
RestartSec=30s
StartLimitInterval=60s
StartLimitBurst=5
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target

启动:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable --now doris-fdb

3. 部署 Meta Service

编辑 /opt/doris-4.0.0/ms/conf/doris_cloud.conf:

ini 复制代码
fdb_cluster = dorisfdb:fdbserver@172.16.10.110:4500,172.16.10.111:4500,172.16.10.112:4500

创建服务 /etc/systemd/system/doris-ms.service:

ini 复制代码
[Unit]
Description=Doris Meta Service
After=doris-fdb.service

[Service]
User=doris
Group=doris
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk"
Environment="PATH=/usr/lib/jvm/java-17-openjdk/bin:/usr/bin:/usr/sbin"
WorkingDirectory=/opt/doris-4.0.0/ms/
ExecStart=/opt/doris-4.0.0/ms/bin/start.sh --daemon
ExecStop=/opt/doris-4.0.0/ms/bin/stop.sh
Restart=on-failure
RestartSec=30s
StartLimitInterval=60s
StartLimitBurst=5
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target

启动并验证:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable --now doris-ms
ps -p $(cat /opt/doris-4.0.0/ms/bin/doris_cloud.pid)
ss -tulnp | grep 5000

4. 部署 FE

编辑 /opt/doris-4.0.0/fe/conf/fe.conf:

ini 复制代码
priority_networks = 172.16.10.0/24
deploy_mode = cloud
cluster_id = 388628430
meta_service_endpoint = 172.16.10.110:5000,172.16.10.111:5000,172.16.10.112:5000
meta_dir = /data/doris-fe/doris-meta
sys_log_dir = /data/doris-fe/log
audit_log_dir = /data/doris-fe/log
LOG_DIR = /data/doris-fe/log

创建目录:

bash 复制代码
sudo -u doris mkdir /data/doris-fe/doris-meta
sudo -u doris mkdir /data/doris-fe/log

创建服务 /etc/systemd/system/doris-fe.service:

ini 复制代码
[Unit]
Description=Doris FE
After=doris-ms.service

[Service]
User=doris
Group=doris
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk"
Environment="PATH=/usr/lib/jvm/java-17-openjdk/bin:/usr/bin:/usr/sbin"
WorkingDirectory=/opt/doris-4.0.0/fe/
ExecStart=/opt/doris-4.0.0/fe/bin/start_fe.sh --daemon
ExecStop=/opt/doris-4.0.0/fe/bin/stop_fe.sh
Restart=on-failure
RestartSec=30s
StartLimitInterval=60s
StartLimitBurst=5
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target

启动 FE:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable --now doris-fe
配置 FE
bash 复制代码
mysql -h 172.16.10.110 -P 9030 -u root
sql 复制代码
SET PASSWORD FOR 'root' = PASSWORD('your_password');
ALTER SYSTEM ADD FOLLOWER "172.16.10.111:9010";
ALTER SYSTEM ADD FOLLOWER "172.16.10.112:9010";
SHOW FRONTENDS;

5. 部署 BE

编辑 /opt/doris-4.0.0/be/conf/be.conf:

ini 复制代码
priority_networks = 172.16.10.0/24
deploy_mode = cloud
meta_service_endpoint = 172.16.10.110:5000,172.16.10.111:5000,172.16.10.112:5000
sys_log_dir = /data/doris-be/log
storage_root_path = /data/doris-be/storage,medium:SSD
file_cache_path = [{"path":"/data/doris-be/file_cache","total_size":858993459200}]
mem_limit = 48G
storage_page_cache_limit = 25%
row_cache_mem_limit = 16%
inverted_index_searcher_cache_limit = 12%
enable_storage_policy = true
cloud_unique_id = doris-node1   # 每个节点不同:doris-node1/2/3
disable_storage_medium_check = true

创建目录:

bash 复制代码
sudo -u doris mkdir /data/doris-be/log
sudo -u doris mkdir /data/doris-be/storage
sudo -u doris mkdir /data/doris-be/file_cache

创建服务 /etc/systemd/system/doris-be.service:

ini 复制代码
[Unit]
Description=Doris BE
After=network.target

[Service]
User=doris
Group=doris
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk"
Environment="PATH=/usr/lib/jvm/java-17-openjdk/bin:/usr/bin:/usr/sbin"
WorkingDirectory=/opt/doris-4.0.0/be/
ExecStart=/opt/doris-4.0.0/be/bin/start_be.sh --daemon
ExecStop=/opt/doris-4.0.0/be/bin/stop_be.sh
Restart=on-failure
RestartSec=30s
StartLimitInterval=60s
StartLimitBurst=5
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target

启动 BE:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable --now doris-be

注册 BE 节点:

sql 复制代码
ALTER SYSTEM ADD BACKEND "172.16.10.110:9050";
ALTER SYSTEM ADD BACKEND "172.16.10.111:9050";
ALTER SYSTEM ADD BACKEND "172.16.10.112:9050";
SHOW BACKENDS;

三、运维调试

检查 FoundationDB

bash 复制代码
/opt/doris-4.0.0/tools/fdb/fdb_ctl.sh fdbcli --exec "status details"

查看 Meta Service 日志

bash 复制代码
journalctl -u doris-ms -n 50 --no-pager

清理 FDB(元数据冲突时重建)

bash 复制代码
sudo -u doris /opt/doris-4.0.0/tools/fdb/fdb_ctl.sh clean

BE 优雅下线

sql 复制代码
ALTER SYSTEM DECOMMISSION BACKEND "172.16.10.112:9050";
-- 等待 SystemDecommissioned = true, TabletNum = 0
ALTER SYSTEM DROP BACKEND "172.16.10.112:9050";

增加 BE 节点

sql 复制代码
ALTER SYSTEM ADD BACKEND "172.16.10.112:9050";

四、注意事项与建议

  1. 版本稳定性:4.0.0 版本存在视图关联查询报错、元数据差异等问题,建议使用更新的稳定版本。
  2. 高可用:建议部署 Nginx 代理 FE 的 9030 端口,避免主 FE 节点宕机后客户端无法访问。程序连接可配置三个 FE 地址。

以上为完整的 Apache Doris 4.0.0 存算分离手动部署指南。

相关推荐
源图客9 天前
Apache Flink 2.3.0(最新版本)
大数据·flink·apache
代立冬11 天前
927 个 PR:Apache SeaTunnel 3.0.0 正式发布!AI 时代,数据集成正在迎来新的可能
人工智能·apache
zhongben_keji12 天前
家政小程序开发全解:经营模式、品类矩阵、派单约束与信用核验
线性代数·矩阵·apache
weixin_1772972206913 天前
二手旧物回收小程序先要解决的不是下单,是“上门之后价格变了怎么办“
小程序·apache
努力变的更好13 天前
H5与小程序之间的回调
前端·小程序·apache
十碗饭吃不饱16 天前
Apache POI 踩坑:setFontFamily 二次设置字体不生效、样式残留问题深度解析
java·word·apache
心随_风动16 天前
Ubuntu系统安装Apache服务教程
linux·ubuntu·apache
ly768918 天前
Kafka 消费者重试与死信:Spring for Apache Kafka 的边界设计
spring·kafka·apache·并发消费·消费者重试·死信主题·位移提交
HoneyMoose18 天前
Ubuntu Apache 配置多站点提示 SSL 错误
ubuntu·apache·ssl
骑着蜗牛撵大象32718 天前
一套引擎撑起树表双模型:Apache IoTDB 2.0 与 TsFile 的选型答卷
apache·时序数据库·iotdb·tsfile·树模型·表模型