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

以下是根据您提供的文档整理而成的部署文章,已替换 IP 地址为 172.16.10.110172.16.10.111172.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 存算分离手动部署指南。

相关推荐
DolphinScheduler社区3 天前
DolphinScheduler 3.3.2 如何调用 DataX 3.0 + SeaTunnel 2.3.12?附 Demo演示!
java·spark·apache·海豚调度·大数据工作流调度
YaBingSec3 天前
玄机网络安全靶场:Apache HTTPD 解析漏洞(CVE-2017-15715)WP
java·笔记·安全·web安全·php·apache
SuperherRo4 天前
服务攻防-中间件安全&Apache&Tomcat&Jetty&Weblogic&AJP协议&反序列化&CVE漏洞
中间件·tomcat·apache·jetty·weblogic
回忆2012初秋4 天前
时序库.net平台下的推荐 SonnetDB,一文分析清除他与Apache IoTDB的区同
apache·iotdb
家有娇妻张兔兔5 天前
Apache POI 导出 Word 踩坑实录:Word 分栏为什么做不好左右平铺
c#·word·apache·poi·分栏
HashData酷克数据5 天前
官宣:Apache Cloudberry (Incubating) 2.1.0 正式发布!
apache
weixin_394758035 天前
直播间小程序码生成问题修复代码清单
android·小程序·apache
YaBingSec6 天前
玄机靶场—Apache-druid(CVE-2021-25646) WP
java·开发语言·笔记·安全·php·apache
回忆2012初秋8 天前
.NET 时序数据操作实战:Apache IoTDB连接与 CRUD 完全指南
.net·apache·iotdb