CentOS 7.x 安装配置 Apache Doris 详细教程
一、环境准备
1.1 系统与硬件要求
表格
| 项目 | 测试环境最低要求 | 生产环境建议 |
|---|---|---|
| 操作系统 | CentOS 7.3+ (64 位) | CentOS 7.9+ |
| CPU | 4 核 + | 16 核 + |
| 内存 | FE: 8GB+ / BE: 16GB+ | FE: 64GB+ / BE: 64GB+ |
| 磁盘 | 100GB+ | SSD 500GB+ |
1.2 软件依赖版本
- Doris 2.x: JDK 17+(推荐)
- Doris 1.x: JDK 1.8+
- MySQL 客户端(用于连接测试)
注意:Doris 0.14.13.1 及之后版本 CPU 需要支持 AVX2 指令集。检查命令:
bash
运行
cat /proc/cpuinfo | grep avx2若无输出,需下载带
noavx2后缀的安装包。
二、系统优化配置(所有节点执行)
2.1 关闭防火墙和 SELinux
# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭SELinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config2.2 关闭交换分区
# 临时关闭 swapoff -a # 永久关闭(注释swap行) sed -i 's/.*swap.*/#&/' /etc/fstab2.3 设置文件句柄数
cat >> /etc/security/limits.conf << EOF * soft nofile 1000000 * hard nofile 1000000 * soft nproc 65535 * hard nproc 65535 EOF修改后需重新登录终端生效,可通过
ulimit -n验证。
2.4 调整内核参数
cat >> /etc/sysctl.conf << EOF vm.max_map_count = 2000000 vm.swappiness = 0 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 EOF # 生效 sysctl -p2.5 关闭透明大页 (THP)
# 临时生效 echo madvise > /sys/kernel/mm/transparent_hugepage/enabled echo madvise > /sys/kernel/mm/transparent_hugepage/defrag # 永久生效 cat >> /etc/rc.d/rc.local << EOF echo madvise > /sys/kernel/mm/transparent_hugepage/enabled echo madvise > /sys/kernel/mm/transparent_hugepage/defrag EOF chmod +x /etc/rc.d/rc.local2.6 时钟同步
# 安装chrony yum install -y chrony # 启动并设置开机自启 systemctl start chronyd systemctl enable chronyd # 验证时间同步 chronyc sourcesDoris 要求集群节点时钟偏差小于 5000ms,否则会导致元数据异常。
2.7 配置 hosts 文件
所有节点配置主机名映射,示例:
cat >> /etc/hosts << EOF 192.168.1.101 doris-node1 192.168.1.102 doris-node2 192.168.1.103 doris-node3 EOF2.8 创建运行用户(推荐)
useradd doris passwd doris # 后续建议使用doris用户运行服务三、安装 JDK
3.1 Doris 2.x 安装 JDK 17
# 安装OpenJDK 17 yum install -y java-17-openjdk java-17-openjdk-devel # 配置环境变量 cat >> /etc/profile << EOF export JAVA_HOME=/usr/lib/jvm/java-17-openjdk export PATH=\$JAVA_HOME/bin:\$PATH EOF source /etc/profile # 验证 java -version3.2 Doris 1.x 安装 JDK 8
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel cat >> /etc/profile << EOF export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export PATH=\$JAVA_HOME/bin:\$PATH EOF source /etc/profile四、下载并解压 Doris
4.1 下载安装包
以 Doris 2.1.8 版本为例(选择对应版本):
cd /usr/local # 下载(支持AVX2) wget https://archive.apache.org/dist/doris/2.1.8/apache-doris-2.1.8-bin-x64.tar.gz # 若CPU不支持AVX2,下载noavx2版本 # wget https://archive.apache.org/dist/doris/2.1.8/apache-doris-2.1.8-bin-x64-noavx2.tar.gz官方下载地址:https://doris.apache.org/download/
4.2 解压并重命名
tar -xzvf apache-doris-2.1.8-bin-x64.tar.gz mv apache-doris-2.1.8-bin-x64 doris # 设置目录权限 chown -R doris:doris /usr/local/doris4.3 配置环境变量
cat >> /etc/profile << EOF export DORIS_HOME=/usr/local/doris export PATH=\$DORIS_HOME/fe/bin:\$DORIS_HOME/be/bin:\$PATH EOF source /etc/profile五、配置并启动 FE (Frontend)
5.1 创建元数据目录
mkdir -p /data/doris/fe/doris-meta chown -R doris:doris /data/doris5.2 修改 FE 配置文件
vim /usr/local/doris/fe/conf/fe.conf核心配置项(根据实际情况修改):
# 元数据存储目录(必须提前创建) meta_dir = /data/doris/fe/doris-meta # 网络绑定(多网卡时必须配置,指定内网网段) priority_networks = 192.168.1.0/24 # JVM 内存配置(根据机器内存调整) JAVA_OPTS="-Xms8g -Xmx8g -XX:+UseG1GC -XX:MaxGCPauseMillis=200" # 端口配置(默认即可,冲突时修改) http_port = 8030 # Web UI端口 rpc_port = 9020 # 内部RPC端口 query_port = 9030 # MySQL协议查询端口 edit_log_port = 9010 # 元数据日志同步端口 # 日志目录 sys_log_dir = /data/doris/fe/log audit_log_dir = /data/doris/fe/log关键说明:
priority_networks是最容易踩坑的配置,多网卡机器必须配置,格式为IP/掩码位,如192.168.1.101/24。
5.3 启动 FE
# 切换到doris用户 su - doris # 启动FE(首次启动) cd /usr/local/doris/fe bin/start_fe.sh --daemon5.4 验证 FE 启动
# 查看进程 ps aux | grep PaloFe # 查看日志 tail -f /usr/local/doris/fe/log/fe.log # 访问Web UI # 浏览器打开: http://<FE_IP>:8030 # 默认账号: root 密码: 空FE 启动成功后,日志中会出现transfer from UNKNOWN to MASTER。
六、配置并启动 BE (Backend)
6.1 创建数据存储目录
mkdir -p /data/doris/be/storage chown -R doris:doris /data/doris/be生产环境建议配置多块磁盘,用分号分隔,例如:
/data1,medium:SSD;/data2,medium:HDD
6.2 修改 BE 配置文件
vim /usr/local/doris/be/conf/be.conf核心配置项:
ini
# 数据存储目录 storage_root_path = /data/doris/be/storage # 网络绑定(与FE同网段) priority_networks = 192.168.1.0/24 # 端口配置 be_port = 9060 # BE内部服务端口 webserver_port = 8040 # BE Web端口 heartbeat_service_port = 9050 # 心跳端口 # 内存配置(建议为机器内存的70%-80%) mem_limit = 80% # 日志目录 sys_log_dir = /data/doris/be/log6.3 启动 BE
su - doris cd /usr/local/doris/be bin/start_be.sh --daemon6.4 验证 BE 启动
# 查看进程 ps aux | grep doris_be # 查看日志 tail -f /usr/local/doris/be/log/be.INFO七、将 BE 添加到集群
BE 启动后不会自动加入集群,需要通过 MySQL 客户端在 FE 上执行添加命令。
7.1 安装 MySQL 客户端
yum install -y mysql7.2 连接 FE 并添加 BE
# 连接FE(默认端口9030,root用户无密码) mysql -h 127.0.0.1 -P 9030 -u root在 MySQL 命令行中执行:
sql
-- 添加BE节点(heartbeat_service_port默认9050) ALTER SYSTEM ADD BACKEND "192.168.1.101:9050"; -- 多节点依次添加 -- ALTER SYSTEM ADD BACKEND "192.168.1.102:9050"; -- ALTER SYSTEM ADD BACKEND "192.168.1.103:9050"; -- 查看BE状态 SHOW BACKENDS\G看到Alive: true表示 BE 已成功加入集群。
八、功能验证
8.1 创建数据库和表
sql
-- 创建数据库 CREATE DATABASE test_db; -- 使用数据库 USE test_db; -- 创建测试表 CREATE TABLE test_table ( id INT, name VARCHAR(50), age INT ) DUPLICATE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 10 PROPERTIES ("replication_num" = "1");单机测试时
replication_num设为 1,生产环境建议 3。
8.2 插入并查询数据
sql
-- 插入数据 INSERT INTO test_table VALUES (1, 'Alice', 25), (2, 'Bob', 30), (3, 'Charlie', 35); -- 查询数据 SELECT * FROM test_table;8.3 查看集群状态
sql
-- 查看FE状态 SHOW FRONTENDS\G -- 查看BE状态 SHOW BACKENDS\G -- 查看集群健康状态 SHOW PROC '/cluster_health'\G九、集群扩容(可选)
9.1 扩容 FE 节点
在新节点配置好 FE 后,以 helper 方式启动:
bin/start_fe.sh --helper master_fe_ip:9010 --daemon然后在 Master FE 上添加:
sql
-- 添加Follower角色FE ALTER SYSTEM ADD FOLLOWER "new_fe_ip:9010"; -- 添加Observer角色FE ALTER SYSTEM ADD OBSERVER "new_fe_ip:9010";9.2 扩容 BE 节点
新节点启动 BE 后,在 FE 上执行添加即可:
sql
ALTER SYSTEM ADD BACKEND "new_be_ip:9050";十、服务启停命令
FE 启停
# 启动 bin/start_fe.sh --daemon # 停止 bin/stop_fe.sh # 重启 bin/stop_fe.sh && bin/start_fe.sh --daemonBE 启停
# 启动 bin/start_be.sh --daemon # 停止 bin/stop_be.sh # 重启 bin/stop_be.sh && bin/start_be.sh --daemon十一、常见问题排查
1. FE 启动失败:端口被占用
# 检查端口占用 netstat -tlnp | grep 8030 # 修改 fe.conf 中的端口配置2. BE 无法连接 FE
- 检查
priority_networks配置是否正确 - 确认防火墙已关闭
- 检查 BE 日志中的错误信息
3. BE 状态显示 Alive: false
sql
-- 查看BE最后一次心跳失败原因 SHOW BACKENDS\G -- 重点查看 LastStartTime、LastHeartbeat、ErrMsg 字段4. vm.max_map_count 报错
启动时提示Please set vm.max_map_count to be 2000000,执行:
sysctl -w vm.max_map_count=20000005. 文件句柄数不足
启动报错Too many open files,确认limits.conf配置后重新登录用户。
十二、端口清单
表格
| 组件 | 端口 | 用途 |
|---|---|---|
| FE | 8030 | HTTP Web UI |
| FE | 9030 | MySQL 协议查询端口 |
| FE | 9020 | 内部 RPC 通信 |
| FE | 9010 | 元数据日志同步(edit_log) |
| BE | 9050 | 心跳服务端口 |
| BE | 9060 | BE 内部服务端口 |
| BE | 8040 | BE Web 监控端口 |
| BE | 8060 | BRPC 端口 |