1. 大数据平台中Apache Doris的安装与配置指南
作为一名经历过多次Doris集群从零搭建到生产落地的工程师,我深知在部署过程中可能遇到的各种"坑"。本文将结合我在电商和物流行业的实战经验,手把手带你完成一个生产级Doris集群的部署,涵盖从环境准备到参数调优的全流程。
Doris作为一款开源的MPP分析型数据库,其核心优势在于:
- 亚秒级响应:相比Hive等批处理系统,查询延迟降低90%以上
- 高并发支持:单集群可支撑500+ QPS的并发查询
- 易运维性:相比ClickHouse等系统,运维复杂度大幅降低
下面我们就从最基础的环境准备开始,逐步构建一个高可用的Doris集群。
2. 环境准备与系统配置
2.1 硬件选型建议
根据数据规模和查询复杂度,硬件配置需相应调整。以下是我的推荐配置:
| 节点角色 | CPU核心 | 内存 | 存储 | 网络 | 数量 |
|---|---|---|---|---|---|
| FE节点 | 16核+ | 64G+ | SSD 500G+ | 10Gbps | 3+ |
| BE节点 | 32核+ | 128G+ | NVMe 2T+ | 10Gbps | 3+ |
注意:BE节点建议使用本地NVMe而非网络存储,因为Doris重度依赖本地磁盘I/O性能
2.2 操作系统要求
推荐使用CentOS 7.6+或Ubuntu 18.04+,需确保:
bash复制# 检查内核版本
uname -r # 要求3.10+
# 检查glibc版本
ldd --version # 要求2.17+
2.3 系统参数调优
这些参数直接影响Doris性能表现,必须预先配置:
bash复制# 修改文件描述符限制
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
# 调整内核参数
echo "vm.swappiness = 0" >> /etc/sysctl.conf
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf
sysctl -p
# 关闭透明大页(THP)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
3. 集群部署实战
3.1 安装包准备
建议从官网下载稳定版本,当前推荐1.2.4+:
bash复制wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-1.2.4-bin-x64.tar.gz
tar zxvf apache-doris-1.2.4-bin-x64.tar.gz
3.2 FE节点部署
首先部署前端(FE)节点:
bash复制cd apache-doris-1.2.4/fe
# 修改配置文件conf/fe.conf
echo "priority_networks = 192.168.1.0/24" >> conf/fe.conf
echo "http_port = 8030" >> conf/fe.conf
echo "rpc_port = 9020" >> conf/fe.conf
echo "query_port = 9030" >> conf/fe.conf
# 启动FE
./bin/start_fe.sh --daemon
验证FE启动:
bash复制mysql -h127.0.0.1 -P9030 -uroot
3.3 BE节点部署
后端(BE)节点配置:
bash复制cd ../be
# 修改配置文件conf/be.conf
echo "priority_networks = 192.168.1.0/24" >> conf/be.conf
echo "be_port = 9060" >> conf/be.conf
echo "webserver_port = 8040" >> conf/be.conf
echo "heartbeat_service_port = 9050" >> conf/be.conf
echo "brpc_port = 8060" >> conf/be.conf
# 启动BE
./bin/start_be.sh --daemon
将BE加入集群:
sql复制-- 在FE中执行
ALTER SYSTEM ADD BACKEND "be_host:9050";
3.4 高可用配置
生产环境必须配置多FE节点:
sql复制-- 在第一个FE中执行
ALTER SYSTEM ADD FOLLOWER "fe_host2:9010";
ALTER SYSTEM ADD OBSERVER "fe_host3:9010";
4. 核心参数调优
4.1 内存管理
properties复制# FE配置(conf/fe.conf)
mem_limit=80% # 不超过物理内存80%
# BE配置(conf/be.conf)
mem_limit=90%
storage_page_cache_limit=40% # 数据页缓存
4.2 并行度控制
properties复制# BE配置
doris_scanner_thread_pool_thread_num=48
doris_scanner_thread_pool_queue_size=1024
4.3 查询优化
sql复制-- 会话级别设置
SET exec_mem_limit=8589934592; -- 8GB
SET parallel_fragment_exec_instance_num=8;
5. 常见问题排查
5.1 BE节点启动失败
可能原因:
- 端口冲突
- 磁盘空间不足
- 内存不足
检查方法:
bash复制tail -n 100 be/log/be.INFO
5.2 查询超时
解决方案:
sql复制-- 增大超时时间(默认300秒)
SET query_timeout=600;
5.3 内存溢出(OOM)
处理方法:
- 检查mem_limit设置
- 优化SQL减少数据扫描量
- 增加BE节点分散负载
6. 生产环境建议
经过多次生产部署,我总结出以下经验:
- 监控指标:重点关注BE节点的CPU使用率、内存使用率和磁盘I/O
- 定期维护:每周执行COMPACT操作合并小文件
- 容量规划:数据量每增长1TB,建议增加1个BE节点
最后提醒,首次部署建议先在测试环境验证所有配置。Doris虽然易用,但参数调优需要根据实际业务场景不断调整。