本文摘要
用 Docker Compose 编排 Apache Doris 2.1.7 单机 FE 与 BE,完成端口、网络、数据与日志持久化及健康检查配置即可部署;部署前需在宿主机调大内存映射参数并关闭交换分区,内存不足则不建议尝试。文章还对比 2.x 与 3.x 的定位、性能、功能和升级差异,供读者按生产稳定或云原生湖仓等场景选版。
直接上docker-compose.yml!!!
services: fe: image: apache/doris:fe-ubuntu-2.1.7 container_name: doris-fe hostname: fe environment: - FE_SERVERS=fe1:172.30.0.2:9010 - MASTER_FE_IP=172.30.0.2 - FE_ID=1 ports: - "8030:8030" # FE HTTP端口 - "9020:9020" # FE BRPC端口 - "9030:9030" # MySQL协议端口 - "9010:9010" # FE thrift端口 volumes: - ./fe-data:/opt/apache-doris/fe/doris-meta # 元数据持久化 - ./fe-log:/opt/apache-doris/fe/log # 日志持久化 networks: doris-net: ipv4_address: 172.30.0.2 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8030/api/health"] interval: 30s timeout: 10s retries: 5
be: image: apache/doris:be-ubuntu-2.1.7 container_name: doris-be hostname: be environment: - FE_SERVERS=fe1:172.30.0.2:9010 - MASTER_FE_IP=172.30.0.2 - BE_ADDR=172.30.0.3:9050 - BE_HEARTBEAT_PORT=9050 - CURRENT_BE_IP=172.30.0.3 - CURRENT_BE_PORT=9050 ports: - "8040:8040" # 心跳服务端口 - "9050:9050" # BE thrift端口 - "9060:9060" # BE BRPC端口 - "8060:8060" # BE HTTP端口 volumes: - ./be-data:/opt/apache-doris/be/storage # 数据存储持久化 - ./be-log:/opt/apache-doris/be/log # 日志持久化 networks: doris-net: ipv4_address: 172.30.0.3 depends_on: fe: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8060/api/health"] interval: 30s timeout: 10s retries: 5
networks: doris-net: driver: bridge ipam: config: - subnet: 172.30.0.0/24报错
doris-be | Please set vm.max_map_count to be 2000000 under root using ‘sysctl -w vm.max_map_count=2000000’. 解决办法:
# 在宿主机(物理机/虚拟机)执行sudo sysctl -w vm.max_map_count=2000000doris-be | Please disable swap memory before installation. 解决办法:
# 在宿主机(物理机/虚拟机)执行sudo swapoff -a如果你服务器内存不够大!那!放弃吧,骚年!
Apache Doris(原百度 Palo)的 2.x 和 3.x 是两条不同的版本线,分别面向不同的用户需求和场景。以下是它们的核心差异和定位:
一、版本线定位
| 版本线 | 2.x(如 2.1.7) | 3.x(如 3.0.0) |
|---|---|---|
| 目标用户 | 稳定生产环境,保守升级需求 | 尝鲜新功能,高性能、云原生场景 |
| 更新策略 | 长期维护(Bug 修复、安全补丁) | 主版本迭代(新功能、架构升级) |
| 兼容性 | 向后兼容(无破坏性变更) | 可能包含不兼容改动(需评估升级成本) |
二、核心功能差异
1. 性能优化
-
2.x 侧重稳定性优化,例如查询计划器改进、小范围资源隔离。
-
3.x
- 向量化引擎增强:全面向量化计算,复杂查询性能提升 2-5 倍。
- Pipeline 执行模型:支持异步流水线执行,降低资源争抢。
- 云原生资源调度:深度集成 Kubernetes,动态扩缩容。
2. 功能特性
-
2.x 成熟功能:物化视图、动态分区、多租户资源组。
-
3.x
- 湖仓一体:直接查询 Hudi/Iceberg 数据(无需导入)。
- JSON 类型增强:支持 JSONB 存储格式和高效检索。
- Light Schema Change:秒级表结构变更(无需重导数据)。
- 多 Catalog 联邦查询:跨 Doris、MySQL、Elasticsearch 联合分析。
3. 存储与事务
-
2.x 基于 Segment V2 存储格式,支持行级更新(需 Merge-on-Read)。
-
3.x
- Segment V3 存储:列存压缩率提升 30%,支持 Z-Order 索引。
- 事务优化:悲观锁机制减少并发冲突,写入吞吐提升。
4. 运维与生态
-
2.x 运维工具成熟,兼容 Hadoop/Spark 生态。
-
3.x
- 自动化运维:智能索引推荐、慢查询自诊断。
- Arrow Flight 协议:高速数据传输(替代 JDBC/ODBC)。
- 多语言 UDF:支持 Java/Python UDF 扩展。
三、是否同时更新?
- 是,两条版本线会并行更新,但侧重点不同:
- 2.1.7:属于 2.1.x 维护分支,仅修复关键问题,无新功能。
- 3.0:属于 3.x 主版本线,持续迭代新特性和架构升级。
四、如何选择?
| 场景 | 推荐版本 |
|---|---|
| 生产环境求稳 | 2.1.x |
| 云原生部署、湖仓分析 | 3.x |
| 高性能实时报表 | 3.x |
| 兼容旧生态(Hadoop) | 2.1.x |
五、升级建议
- 测试环境验证:3.x 新功能需充分测试(如向量化引擎对复杂 SQL 的覆盖性)。
- 回滚预案:3.x 的存储格式变更可能导致降级困难。
- 关注社区动态:3.x 仍在快速迭代,部分功能可能不稳定。
如需具体场景的版本对比,建议参考 Apache Doris 官方升级文档。