本文摘要
用 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=2000000

doris-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

五、升级建议

  1. 测试环境验证:3.x 新功能需充分测试(如向量化引擎对复杂 SQL 的覆盖性)。
  2. 回滚预案:3.x 的存储格式变更可能导致降级困难。
  3. 关注社区动态:3.x 仍在快速迭代,部分功能可能不稳定。

如需具体场景的版本对比,建议参考 Apache Doris 官方升级文档。