
1. Doris集群部署概述Apache Doris作为一款开源的MPP分析型数据库凭借其高性能、实时分析能力和易扩展性在企业级数据分析领域占据重要地位。集群化部署是Doris在生产环境中的标准配置方式通过多节点协同工作实现高可用和负载均衡。我在金融行业的数据仓库项目中多次实施Doris集群部署总结出一套经过验证的最佳实践方案。典型的Doris集群采用存算一体架构由两类节点组成FEFrontend负责元数据管理、查询解析和调度BEBackend负责数据存储和计算执行生产环境建议至少部署3个FE节点1 Master 2 Follower和多个BE节点这种配置既能保证服务高可用又能提供足够的计算存储能力。下面我将详细介绍从零开始部署Doris集群的全过程。2. 部署前准备工作2.1 硬件环境检查根据我的实施经验Doris对硬件有以下基本要求FE节点配置建议CPU8核以上OLAP场景建议16核内存16GB起步元数据量大的场景需要32GB磁盘SSD优先至少100GB空间元数据单独存放BE节点配置建议CPU16核以上计算密集型场景建议32核内存32GB起步数据量大的场景需要128GB磁盘HDD/SSD混合建议每节点配置多块磁盘做存储重要提示生产环境务必确保BE节点有足够的内存我曾遇到因内存不足导致BE频繁OOM的情况建议预留20%的内存缓冲。2.2 软件环境准备操作系统要求CentOS 7/8或Ubuntu 16.04内核版本3.10关闭swap分区调整文件描述符限制建议设置为65535依赖组件安装# CentOS示例 yum install -y epel-release yum install -y java-1.8.0-openjdk-devel lsof telnet wget网络配置检查确保节点间网络延迟1ms开放必要端口FE8030HTTP、9020MySQL协议、9030FE内部通信BE9060BE心跳、8040HTTP、8060BE内部通信3. FE节点部署详解3.1 安装首个FEMaster节点步骤1下载并解压安装包wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.4-bin-x64.tar.gz tar zxvf apache-doris-2.0.4-bin-x64.tar.gz mv apache-doris-2.0.4-bin-x64 /opt/doris步骤2配置元数据存储mkdir -p /data/doris-meta ln -s /data/doris-meta /opt/doris/fe/doris-meta步骤3修改FE配置文件fe/conf/fe.conf# Java堆内存配置根据机器内存调整 JAVA_OPTS-Xmx16g -Xms16g -XX:UseG1GC # 元数据目录指向 meta_dir/data/doris-meta # 网络配置替换为实际IP段 priority_networks192.168.1.0/24 # 时区设置 timezoneAsia/Shanghai步骤4启动FE服务cd /opt/doris/fe ./bin/start_fe.sh --daemon验证启动状态# 查看日志 tail -f log/fe.log # 通过MySQL客户端连接验证 mysql -uroot -P9030 -h127.0.0.1 -e SHOW FRONTENDS;3.2 扩展FE集群Follower节点在新节点上重复安装步骤然后步骤1在Master节点添加FollowerALTER SYSTEM ADD FOLLOWER 192.168.1.2:9010;步骤2在新节点启动FE指定helper节点./bin/start_fe.sh --helper 192.168.1.1:9010 --daemon关键检查点确保所有FE节点的Alive状态为true检查show frontends输出中各节点Join状态观察日志同步情况确保没有meta sync错误经验分享我曾遇到FE节点间时钟不同步导致元数据同步失败的问题建议所有节点配置NTP时间同步服务。4. BE节点部署指南4.1 基础BE节点部署步骤1安装BE软件同FE安装步骤步骤2配置数据存储目录mkdir -p /data1/doris-storage /data2/doris-storage步骤3修改BE配置文件be/conf/be.conf# 存储路径配置多磁盘情况 storage_root_path/data1/doris-storage,medium:hdd;/data2/doris-storage,medium:ssd # 网络配置 priority_networks192.168.1.0/24 # 内存限制建议不超过物理内存80% mem_limit80%步骤4在FE中添加BE节点ALTER SYSTEM ADD BACKEND 192.168.1.101:9050;步骤5启动BE服务cd /opt/doris/be ./bin/start_be.sh --daemon4.2 BE节点优化配置内存管理优化# 查询内存限制防止单个查询占用过多内存 query_mem_limit8G # 压缩内存池 storage_page_cache_limit12G磁盘IO优化# 增加IO线程数 disable_storage_page_cachefalse io_threads16网络优化# 增加RPC线程数 brpc_num_threads64验证BE状态SHOW BACKENDS\G5. 集群验证与基础测试5.1 基础功能验证创建测试数据库CREATE DATABASE cluster_test; USE cluster_test;建表测试分区表分桶表CREATE TABLE user_behavior ( user_id LARGEINT NOT NULL, item_id LARGEINT NOT NULL, behavior_type VARCHAR(10) NULL, ts DATETIME NOT NULL ) PARTITION BY RANGE(ts) ( PARTITION p202301 VALUES LESS THAN (2023-02-01), PARTITION p202302 VALUES LESS THAN (2023-03-01) ) DISTRIBUTED BY HASH(user_id) BUCKETS 32 PROPERTIES (replication_num 3);数据导入测试INSERT INTO user_behavior VALUES (1001, 2001, click, 2023-01-15 10:00:00), (1002, 2003, buy, 2023-01-20 14:30:00);5.2 性能基准测试TPC-H测试Scale Factor 10-- 创建TPC-H测试库 CREATE DATABASE tpch; USE tpch; -- 导入TPC-H数据略 -- 执行查询测试 SELECT l_returnflag, l_linestatus, SUM(l_quantity) AS sum_qty FROM lineitem WHERE l_shipdate DATE 1998-12-01 GROUP BY l_returnflag, l_linestatus;监控关键指标查询响应时间BE节点CPU/内存使用率磁盘IO吞吐量6. 集群运维关键点6.1 日常监控配置推荐监控指标FE JVM内存使用BE Compaction分数查询队列长度副本健康状态Prometheus监控配置示例scrape_configs: - job_name: doris static_configs: - targets: [192.168.1.1:8030, 192.168.1.2:8030] labels: group: doris-fe - targets: [192.168.1.101:8040, 192.168.1.102:8040] labels: group: doris-be6.2 常见问题处理问题1BE节点磁盘空间不足-- 查看数据分布 SHOW TABLET STORAGE STATS; -- 解决方案 -- 1. 增加BE节点 -- 2. 执行数据均衡 ADMIN SET REPLICA DISTRIBUTION BALANCE;问题2查询内存超限-- 临时解决方案 SET exec_mem_limit8589934592; -- 8GB -- 长期方案 -- 优化查询或升级硬件问题3FE元数据损坏# 使用元数据恢复工具 java -jar doris-meta-tool.jar --recover --metaPath/data/doris-meta7. 生产环境优化建议7.1 参数调优经验FE关键参数# 增加查询并行度 parallel_fragment_exec_instance_num8 # 优化元数据加载 metadata_memory_limit4GBE关键参数# 压缩优化 disable_storage_page_cachefalse storage_format_version2 # 查询执行优化 enable_vectorized_enginetrue batch_size40967.2 高可用设计推荐架构3 FE节点1 Master 2 Follower多个BE节点建议至少3个负载均衡器如Nginx代理FE的MySQL协议端口自动故障转移配置# 检查FE Master健康状态脚本示例 #!/bin/bash if ! mysql -uroot -P9030 -h192.168.1.1 -e SELECT 1 /dev/null; then # 触发Master切换 mysql -uroot -P9030 -h192.168.1.2 -e ALTER SYSTEM TRANSFER MASTER TO 192.168.1.2:9010 fi8. 版本升级策略8.1 滚动升级步骤逐个停止BE节点并升级逐个停止Follower FE并升级最后升级Master FE升级命令示例# BE升级步骤 ./bin/stop_be.sh # 替换新版本文件 ./bin/start_be.sh --daemon8.2 升级验证要点检查所有节点版本号验证基础查询功能检查数据一致性监控性能指标变化重要经验在金融项目升级时我们总是先在测试环境完整演练升级过程记录每个步骤耗时制定详细的回滚方案。