Doris记录
Apache Doris 简介
Apache Doris(原百度 Palo)是一个现代化的MPP(大规模并行处理)分析型数据库,专为高并发、低延迟的实时分析场景设计。它结合了Google Mesa和Apache Impala的优点,提供了高性能、易扩展、高可用的分布式SQL数据分析解决方案。Doris采用列式存储引擎,支持多维分析、即席查询、统一的批流处理等特性,广泛应用于报表分析、即席查询、数据可视化、实时大屏等场景。
核心特性
- 简单易用:兼容MySQL协议,支持标准SQL,无需复杂ETL
- 高性能:MPP架构,向量化执行引擎,智能索引
- 高可用:支持多副本自动同步,故障自动恢复
- 可扩展:支持在线扩缩容,无需停机
- 统一的数据分析平台:支持多种数据模型(明细、聚合、更新)和数据源接入
Doris架构
Doris主要由两种角色组成:
- **FE (Frontend)**:负责元数据管理、查询解析、规划和调度
- **BE (Backend)**:负责数据存储和查询执行

FE角色
- Leader FE:处理所有元数据写操作,保证元数据一致性
- Follower FE:接收Leader的元数据更新,提供读服务,可在Leader故障时被选为新Leader
- Observer FE:只提供读服务,不参与选举,用于扩展查询吞吐量
BE角色
所有BE节点对等,负责数据存储和查询执行,支持横向扩展。
安装部署Doris
环境要求
- 操作系统:CentOS 7+/Ubuntu 16.04+
- JDK:1.8+
- GCC:4.8.2+
- 内存:建议FE ≥ 16GB,BE ≥ 32GB
- 磁盘:SSD为佳
- 网络:万兆网卡为佳
安装步骤
1. 下载安装包
1 | # 下载最新版本 |
2. 配置FE
1 | cd apache-doris-2.0.2/fe |
3. 配置BE
1 | cd apache-doris-2.0.2/be |
4. 启动FE
1 | cd apache-doris-2.0.2/fe |
5. 启动BE
1 | cd apache-doris-2.0.2/be |
6. 添加BE节点到集群
使用MySQL客户端连接FE:
1 | mysql -h 127.0.0.1 -P 9030 -u root |
添加BE节点:
1 | ALTER SYSTEM ADD BACKEND "192.168.1.10:9050"; |
常见问题及解决方案
1. FE部署问题
问题:priority_networks配置错误
ip address range configured for priority_networks does not include the current IP address
解决方案:
需要在FE的conf目录下正确设置priority_networks网段,确保包含当前节点IP地址。
查看本机IP地址:
1
ip addr show eth0 | grep inet | awk '{print $2}' | awk -F'/' '{print $1}'
修改
fe.conf文件,设置正确的网段:1
priority_networks=192.168.1.0/24
问题:FE启动时卡在UNKNOWN状态
wait catalog to be ready. FE type: UNKNOWN. is ready: false, counter: 658341
解决方案:
检查是否存在虚拟IP地址冲突:
1
ip addr
检查元数据目录权限:
1
chown -R doris:doris /path/to/doris/fe/meta
检查日志文件查找具体错误:
1
tail -f log/fe.log
如果是全新安装,可以尝试清空元数据目录重新启动:
1
2rm -rf /path/to/doris/fe/meta/*
bin/start_fe.sh --daemon
2. BE部署问题
问题:要求禁用swap内存
Please disable swap memory before installation
解决方案:
Doris要求禁用swap以获得更好的性能。
临时禁用swap:
1
sudo swapoff -a
永久禁用swap(修改/etc/fstab):
1
2
3
4# 编辑/etc/fstab,注释掉包含swap的行
sudo vim /etc/fstab
# 注释掉类似下面的行
# /dev/mapper/centos-swap swap swap defaults 0 0
问题:JAVA_HOME未定义
The JAVA_HOME environment variable is not defined correctly
解决方案:
设置JAVA_HOME环境变量:
1
2echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk' >> ~/.bashrc
source ~/.bashrc或在启动脚本中直接指定:
1
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk bin/start_fe.sh --daemon
3. 集群问题
问题:BE节点无法加入集群
解决方案:
检查BE状态:
1
SHOW BACKENDS;
确认网络连通性:
1
telnet BE_IP 9050
检查BE日志:
1
tail -f /path/to/doris/be/log/be.INFO
尝试重新添加BE:
1
2ALTER SYSTEM DECOMMISSION BACKEND "BE_IP:9050";
ALTER SYSTEM ADD BACKEND "BE_IP:9050";
问题:表创建后无法写入数据
解决方案:
- 检查表的分区和分桶设计是否合理
- 确认BE节点状态正常
- 检查写入语句是否正确
- 查看FE和BE日志获取详细错误信息
性能优化建议
- 合理设计表模型:选择适当的模型(Aggregate、Unique、Duplicate)
- 优化分区分桶:根据查询模式设计分区和分桶策略
- 合理设置Bloom Filter:对高基数列启用Bloom Filter
- 使用物化视图:针对常见查询模式创建物化视图
- 合理设置副本数:根据可靠性需求和资源情况设置
- 定期Compaction:执行
ADMIN MANUAL COMPACT优化存储 - 监控资源使用:关注CPU、内存、磁盘和网络使用情况
常用运维命令
1 | -- 查看FE节点 |
总结
Apache Doris是一个功能强大的分析型数据库,适合各种实时分析场景。正确部署和配置Doris是充分发挥其性能的关键。本文记录了Doris部署过程中的常见问题及解决方案,希望能帮助用户更顺利地部署和使用Doris。

