30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度大家好今天我们来聊聊如何用 Docker 部署 Apache Doris。如果你正在寻找一个高性能、易扩展的实时分析型数据库但又被复杂的集群部署和配置劝退那么这篇文章就是为你准备的。Docker 容器化部署能极大地简化 Doris 的安装和运维流程无论是用于本地开发测试还是快速搭建演示环境都堪称利器。本文将手把手带你完成从零到一的 Docker 化 Doris 部署。我们会先快速了解 Doris 是什么然后准备好 Docker 环境接着分别部署 FE前端和 BE后端节点最后通过一个完整的 SQL 示例验证集群。无论你是数据分析师、后端开发还是运维工程师只要跟着步骤走都能在自己的机器上成功运行起一个 Doris 集群。1. 背景与核心概念在开始动手之前我们先花几分钟搞清楚几个关键问题Doris 是什么为什么选择它以及 Docker 部署能带来哪些便利。1.1 Apache Doris 简介Apache Doris 是一个基于 MPP大规模并行处理架构的高性能、实时的分析型数据库。它最初由百度开源并捐赠给了 Apache 基金会。你可以把它理解为一个“加强版”的 OLAP 数据库专为应对海量数据的实时多维分析、报表查询和即席查询等场景而设计。它的核心优势在于极速查询通过列式存储、向量化执行引擎和预聚合物化视图等技术对亿级甚至十亿级数据的聚合查询能在亚秒级返回结果。兼容 MySQL 协议这意味着你可以使用标准的 MySQL 客户端如mysql命令行工具、Navicat、JDBC直接连接 Doris学习成本和接入成本极低。易于运维 Doris 采用 FEFrontend和 BEBackend分离的架构。FE 负责元数据管理、查询解析和调度BE 负责数据存储和计算。这种架构清晰扩容方便。支持实时和批量数据导入可以通过 Stream Load、Broker Load、Routine Load 等多种方式方便地从 Kafka、HDFS、本地文件等数据源导入数据。1.2 为什么选择 Docker 部署传统部署 Doris 需要我们在多台物理机或虚拟机上手动安装 Java、配置系统参数、分发安装包、修改配置文件过程繁琐且容易出错。Docker 部署则带来了革命性的简化环境隔离与一致性Docker 镜像包含了运行 Doris 所需的所有依赖如特定版本的 Java确保在任何支持 Docker 的机器上运行环境完全一致“在我机器上能跑”的问题不复存在。快速启动与销毁一条docker run命令就能启动一个 Doris 节点几秒钟即可完成。测试完成后一键删除容器和镜像系统恢复干净。简化集群管理通过 Docker Compose 或编排工具可以轻松定义和启动包含多个 FE、BE 节点的完整集群管理生命周期变得非常简单。资源可控可以方便地为每个容器分配固定的 CPU 和内存资源避免单个服务耗尽主机资源。对于开发、测试、演示以及中小型应用场景Docker 部署是体验和评估 Doris 的最佳方式。当然生产环境部署需要考虑更多因素如数据持久化、网络规划、监控告警等但 Docker 化部署依然是现代运维体系中的重要一环。1.3 核心组件FE 与 BE理解 FE 和 BE 的角色对于后续的部署和排错至关重要FE (Frontend)Doris 的前端节点是一个 Java 进程。职责存储和管理集群元数据如表结构、分区信息、负责用户连接的接入、SQL 的解析与查询计划的生成、集群调度。高可用通常需要部署多个 FE 节点1个 Leader 多个 Follower来保证高可用。我们单机测试可以先部署一个。BE (Backend)Doris 的后端节点是一个 C 进程。职责负责数据的存储表数据以 Tablet 为单元分布式存储和 SQL 查询计划的具体执行扫描、聚合、排序等。可扩展性通过增加 BE 节点可以线性扩展集群的存储和计算能力。一个最小的可用 Doris 集群至少需要1个 FE和1个 BE。2. 环境准备与版本说明工欲善其事必先利其器。在拉取镜像之前我们需要确保基础环境就绪。2.1 系统与 Docker 环境操作系统本文演示环境为 Ubuntu 22.04 LTS。其他 Linux 发行版如 CentOS 7/8、macOS 或 Windows需使用 WSL2同样适用命令基本一致。Docker 引擎确保已安装并启动 Docker。可以通过以下命令检查docker --version docker info如果未安装请参考 Docker 官方文档进行安装。建议使用较新版本如 20.10。Docker Compose可选但推荐用于编排多容器应用。我们将用它来定义和启动整个集群。检查安装docker-compose --version如果未安装同样参考官方文档安装。2.2 资源分配建议Doris 对内存比较敏感尤其是 BE 节点。在启动容器前请确保你的 Docker 宿主机能提供足够的资源。开发/测试环境最小配置FE: 建议分配至少 4GB 内存。BE: 建议分配至少 8GB 内存。BE 的内存主要用于查询计算和数据加载内存不足会导致查询失败或导入异常。磁盘空间为数据持久化卷准备至少 20GB 空间。CPU建议为每个容器分配 2 个以上的 CPU 核心。请注意以下所有操作均假设你在具有sudo权限的用户下执行或者直接使用root用户。2.3 版本选择我们将使用 Apache Doris 官方在 Docker Hub 上维护的镜像。截至本文撰写时最新的稳定版本是2.0.x系列。你可以访问 Docker Hub - apache/doris 查看所有可用标签。为了稳定我们选择2.0.4版本。这个镜像包含了 FE 和 BE 的所有必要组件我们可以通过启动参数来决定运行哪个角色。3. 部署 Apache Doris 单节点集群我们将分两步走先部署 FE再部署 BE最后将它们组成一个集群。为了数据安全和管理方便我们会使用 Docker 的“卷挂载”功能将重要数据持久化到宿主机。3.1 第一步部署 FE 节点FE 节点需要持久化其元数据否则容器重启后所有创建的数据库、表信息都会丢失。创建持久化目录在宿主机上创建一个目录用于存放 FE 的元数据。mkdir -p /opt/doris-docker/fe/doris-meta mkdir -p /opt/doris-docker/fe/logdoris-meta: 存放 FE 的元数据这是最重要的数据必须持久化。log: 存放 FE 的日志文件方便排查问题。启动 FE 容器使用docker run命令启动。docker run -d \ --name doris-fe \ --env FE_SERVERSfe1:172.20.80.2:9010 \ --env FE_ID1 \ -p 8030:8030 \ -p 9030:9030 \ -v /opt/doris-docker/fe/doris-meta:/opt/apache-doris/fe/doris-meta \ -v /opt/doris-docker/fe/log:/opt/apache-doris/fe/log \ apache/doris:2.0.4-fe命令参数详解-d: 后台运行容器。--name doris-fe: 为容器指定一个名字方便管理。--env FE_SERVERS...: 设置 FE 服务列表。这里我们只部署一个 FE其 IP 需要设置为容器在 Docker 网络内能被 BE 访问到的 IP。172.20.80.2是一个示例我们需要替换为实际值见下一步。--env FE_ID1: 指定该 FE 节点的 ID从 1 开始。-p 8030:8030: 将宿主机的 8030 端口映射到容器的 8030 端口。这是 FE 的 HTTP 端口用于 Web 界面和一些 REST API。-p 9030:9030: 映射 9030 端口。这是 FE 的 MySQL 协议端口客户端通过此端口连接 Doris 执行 SQL。-v ...:/opt/apache-doris/fe/doris-meta: 将宿主机目录挂载到容器内的元数据目录实现持久化。-v ...:/opt/apache-doris/fe/log: 挂载日志目录。apache/doris:2.0.4-fe: 指定使用的镜像和标签。-fe表示这是 FE 镜像。获取 FE 容器 IP 并重新启动关键一步我们需要获取 FE 容器在 Docker 网络内的实际 IP并用它来正确设置FE_SERVERS。# 查看 doris-fe 容器的 IP 地址 docker inspect -f {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} doris-fe假设输出为172.17.0.2。停止并删除刚才启动的容器然后用正确的 IP 重新启动。docker stop doris-fe docker rm doris-fe docker run -d \ --name doris-fe \ --env FE_SERVERSfe1:172.17.0.2:9010 \ --env FE_ID1 \ -p 8030:8030 \ -p 9030:9030 \ -v /opt/doris-docker/fe/doris-meta:/opt/apache-doris/fe/doris-meta \ -v /opt/doris-docker/fe/log:/opt/apache-doris/fe/log \ apache/doris:2.0.4-fe注意FE_SERVERS中的 IP 必须使用 Docker 容器网络内的 IP如172.17.0.2不能使用localhost或127.0.0.1因为 BE 容器需要通过这个 IP 来访问 FE。检查 FE 启动状态# 查看容器日志关注是否有 ERROR docker logs -f --tail 50 doris-fe # 或者通过 curl 检查 FE 的 HTTP 端口是否就绪 curl http://localhost:8030/api/bootstrap看到返回{msg:success,code:0,data:true}类似的 JSON或者日志中出现thrift server started、start FE successfully等字样说明 FE 启动成功。3.2 第二步部署 BE 节点BE 节点需要持久化存储数据。创建持久化目录mkdir -p /opt/doris-docker/be/storage mkdir -p /opt/doris-docker/be/logstorage: 存放 BE 的底层数据文件Tablet 数据必须持久化。log: 存放 BE 的日志。启动 BE 容器启动 BE 时需要指定 FE 的地址即上一步中 FE 容器的 IP 和端口。docker run -d \ --name doris-be \ --env FE_HOST172.17.0.2 \ # 这里填写 FE 容器的实际 IP --env FE_PORT9010 \ -p 8040:8040 \ -v /opt/doris-docker/be/storage:/opt/apache-doris/be/storage \ -v /opt/doris-docker/be/log:/opt/apache-doris/be/log \ apache/doris:2.0.4-be命令参数详解--env FE_HOST172.17.0.2: 告诉 BE 节点FE 在哪里。务必替换为你实际的 FE 容器 IP。--env FE_PORT9010: FE 的 thrift RPC 端口默认为 9010用于 BE 向 FE 发送心跳和注册。-p 8040:8040: 映射 BE 的 HTTP 端口用于状态监控和调试。-v ...:/opt/apache-doris/be/storage: 挂载数据存储目录。apache/doris:2.0.4-be: 使用 BE 镜像。检查 BE 启动状态docker logs -f --tail 100 doris-be等待日志中出现heartbeat success或finish to add backend等信息表明 BE 已成功向 FE 注册。3.3 第三步在 FE 中添加 BE 节点BE 容器启动并向 FE 注册后还需要在 FE 中通过 SQL 命令将其正式添加到集群中。使用 MySQL 客户端连接 FE# 使用宿主机上的 mysql 客户端连接到映射的 9030 端口 mysql -h 127.0.0.1 -P 9030 -uroot默认情况下Doris 的 root 用户密码为空直接回车即可。如果连接成功你会看到MySQL [(none)]提示符。执行添加 BE 的命令-- 在 MySQL 客户端中执行 ALTER SYSTEM ADD BACKEND 172.17.0.3:9050;注意这里的172.17.0.3:9050需要替换为你的BE 容器 IP和BE 的心跳端口默认为9050。# 获取 BE 容器 IP docker inspect -f {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} doris-be假设 BE IP 是172.17.0.3那么命令就是ALTER SYSTEM ADD BACKEND 172.17.0.3:9050;。验证 BE 状态SHOW BACKENDS\G执行后仔细查看输出。你需要关注以下几列Alive: 是否为true。true表示节点存活。SystemDecommissioned和ClusterDecommissioned: 是否为false。false表示节点未下线。LastHeartbeat: 最近一次心跳时间应该是最近几秒。ErrMsg: 错误信息如果正常应为空。 如果Alive为true且没有错误信息恭喜你BE 节点已成功加入集群4. 使用 Docker Compose 一键部署推荐手动运行两条docker run命令并配置 IP 略显麻烦且不易管理。使用 Docker Compose 可以让我们用一份声明式的 YAML 文件定义整个集群实现一键启动和停止。4.1 编写 docker-compose.yml在宿主机上创建一个工作目录例如~/doris-cluster然后创建docker-compose.yml文件。version: 3.8 services: doris-fe: image: apache/doris:2.0.4-fe container_name: doris-fe hostname: doris-fe environment: FE_SERVERS: fe1:doris-fe:9010 FE_ID: 1 ports: - 8030:8030 # Web UI/API - 9030:9030 # MySQL Protocol volumes: - ./fe/doris-meta:/opt/apache-doris/fe/doris-meta - ./fe/log:/opt/apache-doris/fe/log networks: doris-net: ipv4_address: 172.20.80.2 # 为 FE 指定固定 IP方便 BE 连接 healthcheck: test: [CMD, curl, -f, http://localhost:8030/api/bootstrap] interval: 30s timeout: 10s retries: 3 start_period: 60s doris-be: image: apache/doris:2.0.4-be container_name: doris-be hostname: doris-be environment: FE_HOST: doris-fe # 使用 service nameDocker Compose 会自动解析为 IP FE_PORT: 9010 depends_on: doris-fe: condition: service_healthy # 等待 FE 健康检查通过后再启动 BE ports: - 8040:8040 # BE Web UI volumes: - ./be/storage:/opt/apache-doris/be/storage - ./be/log:/opt/apache-doris/be/log networks: doris-net: ipv4_address: 172.20.80.3 # 为 BE 指定固定 IP deploy: resources: limits: memory: 8G # 限制 BE 内存使用根据实际情况调整 networks: doris-net: driver: bridge ipam: config: - subnet: 172.20.80.0/24配置文件亮点说明自定义网络doris-net我们创建了一个独立的 Docker 网络并为 FE 和 BE 指定了固定的 IP 地址172.20.80.2和172.20.80.3。这彻底解决了 IP 动态变化的问题BE 通过服务名doris-fe或固定 IP 都能稳定连接到 FE。健康检查为 FE 配置了健康检查BE 的启动依赖于 FE 的健康状态 (condition: service_healthy)确保了启动顺序的可靠性。资源限制为 BE 服务设置了内存限制防止其占用过多主机资源。数据卷使用相对路径 (./fe,./be) 挂载数据所有持久化数据都会保存在docker-compose.yml文件同级目录下管理更清晰。4.2 启动与管理集群启动集群在docker-compose.yml所在目录执行。docker-compose up -d-d表示后台运行。Compose 会自动创建网络、拉取镜像如果本地没有、启动容器。查看集群状态docker-compose ps查看所有服务的状态。或者使用docker-compose logs -f doris-fe来跟踪 FE 的日志。添加 BE 到集群等待几十秒待 FE 和 BE 完全启动后连接 FE 并添加 BE。mysql -h 127.0.0.1 -P 9030 -uroot-- 注意这里使用我们在 docker-compose 中为 BE 指定的固定 IP ALTER SYSTEM ADD BACKEND 172.20.80.3:9050; SHOW BACKENDS\G停止集群docker-compose down此命令会停止并删除容器但不会删除网络和卷中的数据./fe,./be目录下的数据会保留。如果想彻底清理可以加上-v参数慎用会删除所有数据docker-compose down -v5. 完整实战从建表到查询现在我们的 Doris 集群已经运行起来了。让我们通过一个完整的例子体验一下它的强大功能。我们将创建一个数据库、一张表导入一些样例数据然后执行查询。5.1 连接集群并创建数据库使用 MySQL 客户端连接mysql -h 127.0.0.1 -P 9030 -uroot执行 SQL-- 1. 创建一个测试数据库 CREATE DATABASE IF NOT EXISTS test_db; USE test_db; -- 2. 查看当前数据库 SELECT DATABASE();5.2 创建数据表我们创建一张用户行为表user_behavior模拟典型的日志分析场景。CREATE TABLE IF NOT EXISTS user_behavior ( user_id INT NOT NULL, item_id INT NOT NULL, category_id INT NOT NULL, behavior_type VARCHAR(10) NOT NULL COMMENT pv, buy, cart, fav, visit_time DATETIME NOT NULL, province VARCHAR(50) ) DUPLICATE KEY(user_id, item_id, category_id) -- 指定重复数据下的聚合方式 DISTRIBUTED BY HASH(user_id) BUCKETS 10 -- 分桶方式影响数据分布 PROPERTIES ( replication_num 1 -- 副本数单机测试设为1 );建表语句解析DUPLICATE KEY: 指定了重复数据所有指定列的值都相同的处理方式。Doris 支持多种数据模型聚合、唯一、重复这里使用“重复”模型即保留所有导入的行。DISTRIBUTED BY HASH(user_id) BUCKETS 10: 指定数据在 BE 节点间的分布方式。按user_id的哈希值分到 10 个桶中再均匀分布到各个 BE。PROPERTIES: 设置表属性。replication_num表示数据副本数生产环境通常为 3 以保证高可用单机测试设为 1。5.3 使用 Stream Load 导入本地数据Doris 支持多种数据导入方式。这里演示最常用的Stream Load通过 HTTP 协议推送本地文件到 Doris。准备数据文件在宿主机上创建一个 CSV 文件~/test_data.csv。10001,2001,101,pv,2023-10-01 08:30:00,北京 10002,2002,102,buy,2023-10-01 09:15:00,上海 10001,2003,101,cart,2023-10-01 10:00:00,北京 10003,2001,101,fav,2023-10-01 11:30:00,广东 10002,2004,103,pv,2023-10-01 14:20:00,上海 10003,2002,102,buy,2023-10-01 16:45:00,广东执行 Stream Load 导入使用curl命令将文件导入到test_db.user_behavior表。curl --location-trusted -u root: \ -H label:test_load_20241001_01 \ -H column_separator:, \ -T /root/test_data.csv \ http://127.0.0.1:8030/api/test_db/user_behavior/_stream_load参数解释-u root:用户名和密码root 用户默认密码为空。-H label:...为这次导入任务指定一个唯一标签用于保证数据不重复导入Exactly-Once 语义。-H column_separator:,指定 CSV 文件的列分隔符为逗号。-T /path/to/file指定要上传的文件路径。http://.../_stream_load: Stream Load 的 API 地址格式为http://FE_HOST:FE_HTTP_PORT/api/DATABASE/TABLE/_stream_load。如果导入成功会返回一个 JSON其中Status: Success。在 MySQL 客户端中验证导入USE test_db; SELECT * FROM user_behavior;你应该能看到刚才导入的 6 条数据。5.4 执行分析查询现在让我们执行一些典型的分析查询感受 Doris 的速度。统计每种行为类型的数量SELECT behavior_type, COUNT(*) AS cnt FROM user_behavior GROUP BY behavior_type ORDER BY cnt DESC;统计每个省份的购买buy行为数量SELECT province, COUNT(*) AS buy_count FROM user_behavior WHERE behavior_type buy GROUP BY province;查询每个用户最早和最晚的访问时间SELECT user_id, MIN(visit_time) AS first_visit, MAX(visit_time) AS last_visit, COUNT(*) AS total_actions FROM user_behavior GROUP BY user_id;这些查询在亿级数据量下依然能保持极快的响应速度这正是 Doris 的核心价值所在。6. 常见问题与排查思路部署和使用过程中你可能会遇到一些问题。下面列出一些常见情况及其解决方法。6.1 容器启动失败问题现象常见原因解决思路docker run后容器立即退出1. 环境变量配置错误如FE_SERVERS格式不对。2. 挂载的宿主机目录权限不足导致进程无法写入。3. 端口冲突。1. 使用docker logs container_id查看启动日志根据错误信息修正。2. 确保宿主机目录存在且 Docker 进程有读写权限通常需要chmod 777或调整目录所有者。3. 使用netstat -tlnp检查8030,9030,8040端口是否被占用修改-p参数映射其他端口。FE 日志报Failed to get master frontendFE 节点启动时无法选举出 Leader通常发生在首次启动或元数据损坏时。1. 检查doris-meta目录是否为空或损坏。首次启动应为空目录。2. 尝试清理元数据目录注意这会丢失所有数据后重启rm -rf /opt/doris-docker/fe/doris-meta/*。BE 日志报Fail to get master client from cacheBE 无法连接到 FE。1. 确认FE_HOST和FE_PORT环境变量设置正确且是 FE 容器内部网络可达的 IP。2. 进入 BE 容器docker exec -it doris-be bash尝试ping doris-fe或telnet doris-fe 9010测试网络连通性。3. 检查 FE 是否健康运行。6.2 BE 添加失败或状态异常问题现象常见原因解决思路SHOW BACKENDS显示Alive为false1. BE 与 FE 之间的网络不通。2. BE 进程异常退出。3. 心跳端口9050未开放。1. 检查 Docker 网络确保 FE 和 BE 在同一个自定义网络或默认的 bridge 网络能互通。2. 查看 BE 容器日志docker logs doris-be检查是否有 OOM内存不足等错误。3. 在 FE 容器内尝试telnet be_ip 9050。ErrMsg列显示tablet num mismatch等BE 本地存储的数据与 FE 元数据中记录的不一致。1. 这通常发生在异常重启或数据损坏后。可以尝试在 BE 容器内重启 BE 服务不推荐新手操作。2. 更稳妥的方式是先通过ALTER SYSTEM DECOMMISSION BACKEND be_ip:be_port;安全下线该 BE清理其数据目录后再重新添加一个干净的 BE。6.3 数据导入或查询失败问题现象常见原因解决思路Stream Load 返回Fail to do stream load1. 表不存在或数据库名写错。2. 列数不匹配或数据类型转换失败。3. Label 重复。1. 仔细检查 API URL 中的数据库名和表名。2. 检查 CSV 文件格式确保列分隔符、换行符正确数据与表结构匹配。3. Stream Load 的 Label 具有唯一性重复的 Label 会被拒绝。更换一个新的 Label。查询报错Memory limit exceeded查询所需内存超过 BE 节点的限制。1. 这是 BE 内存不足的典型表现。优化查询语句避免SELECT *增加过滤条件。2. 为 BE 容器分配更多内存修改docker run的-m参数或 docker-compose 中的mem_limit。3. 考虑增加 BE 节点分散计算压力。7. 最佳实践与工程建议将 Docker 化 Doris 用于生产或准生产环境时需要考虑更多工程化因素。7.1 数据持久化与备份必须持久化的目录FE:/opt/apache-doris/fe/doris-meta(元数据)BE:/opt/apache-doris/be/storage(用户数据)FE BE:/opt/apache-doris/*/log(日志便于排查)备份策略元数据备份定期使用SHOW BACKUP;和BACKUP命令将元数据和数据备份到对象存储如 S3或其他 HDFS。卷备份对宿主机上的持久化卷目录如/opt/doris-docker进行定期快照或 rsync 到备份服务器。灾难恢复准备好使用备份的元数据和数据目录快速重建集群的预案。7.2 资源配置与监控内存设置通过-m或docker-compose的deploy.resources.limits.memory为容器设置硬限制。BE 内存建议不少于 8GBFE 不少于 4GB。CPU 设置使用--cpus或deploy.resources.limits.cpus限制 CPU 使用避免 BE 计算任务拖垮宿主。监控Docker 层面使用docker stats或 cAdvisor 监控容器 CPU、内存、网络 IO。Doris 层面FE Web UI:http://fe_host:8030可以查看系统状态、查询、导入任务。BE Web UI:http://be_host:8040可以查看 BE 状态、Tablet 信息、数据目录使用情况。使用SHOW PROC /backends;和SHOW PROC /frontends;命令查看详细状态。7.3 生产环境部署考量单机 Docker 部署非常适合开发测试但生产环境需要更高的可用性和性能。多 FE 部署至少部署 3 个 FE 节点1 Leader 2 Follower以实现高可用。在 docker-compose 中定义多个doris-fe服务并正确配置FE_SERVERS环境变量包含所有 FE 节点信息。多 BE 部署部署多个 BE 节点以实现水平扩展。在docker-compose.yml中可以使用scale指令在deploy下或定义多个独立的 BE 服务。使用编排工具考虑使用 Kubernetes (K8s) 替代 Docker Compose利用其强大的服务发现、负载均衡、自愈和扩缩容能力来管理 Doris 集群。社区已有 Doris 的 K8s Operator 项目。分离网络与存储生产环境应考虑使用专门的网络插件如 Calico和存储类StorageClass如 Ceph RBD、AWS EBS来提供更稳定、高性能的网络和存储。7.4 安全建议修改默认密码部署后第一时间通过SET PASSWORD FOR root PASSWORD(your_strong_password);修改 root 密码。创建业务用户避免直接使用 root 用户进行业务操作。通过CREATE USER创建具有特定权限的数据库用户。网络隔离将 Doris 集群部署在内部网络通过跳板机或应用程序网关来访问不要将9030、8030等端口直接暴露在公网。镜像安全定期更新到官方发布的最新稳定版镜像以获取安全补丁。通过以上步骤你应该已经成功在 Docker 中部署并运行了一个功能完整的 Apache Doris 集群。从环境准备、组件部署、集群配置到数据操作和问题排查我们覆盖了一个完整的闭环。这套方法能让你在几分钟内就搭建起一个强大的实时分析数据库环境无论是用于学习新技术、进行原型验证还是作为轻量级应用的后台都非常高效。记住本文的 Docker Compose 配置是一个极佳的起点你可以根据实际需求轻松地修改它来扩展 FE 或 BE 的数量调整资源限制或者集成到更复杂的 CI/CD 流水线中。接下来你可以深入探索 Doris 的更多高级特性如物化视图、动态分区、数据湖分析等将其应用到更广阔的数据分析场景中。如果在实践中遇到新的问题多查看官方文档和日志大部分难题都能找到答案。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度