
30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度最近在调研实时数仓和数据分析方案时发现 Apache Doris 凭借其极速的查询性能和 MySQL 协议的易用性成为了很多开发者和企业的首选。无论是用于个人学习、项目 POC概念验证还是作为中小型业务的数据分析引擎一个稳定、可用的单机版 Doris 环境都是快速上手和验证功能的第一步。然而在部署过程中新手常常会遇到环境配置、端口冲突、服务启动失败等问题网上资料虽然多但步骤零散版本不一照着做很容易踩坑。本文将为你提供一份从零开始的、保姆级的 Apache Doris 单机版部署实战指南涵盖Docker 快速部署和手动二进制部署两种主流方式并详细解释每一步的原理和常见问题排查方法。无论你是数据开发新手还是想快速搭建一个本地测试环境都能从本文中找到清晰的路径。1. Apache Doris 简介与单机部署适用场景在开始动手之前我们先花几分钟了解一下 Apache Doris 是什么以及为什么单机部署是学习和测试的最佳起点。1.1 什么是 Apache DorisApache Doris 是一个现代化的、高性能的、实时的分析型数据库MPP。它最初由百度贡献并开源现已成为 Apache 顶级项目。Doris 的设计目标是为在线报表、实时数据分析、数据仓库等场景提供极速的查询体验。其核心特点包括极速查询 基于列式存储引擎和向量化执行引擎在亚秒级内完成数十亿数据的聚合查询。高并发与高吞吐 支持高并发点查询和批量数据导入。易用性 兼容 MySQL 协议你可以使用标准的 MySQL 客户端如mysql, Navicat, DBeaver直接连接 Doris学习成本极低。统一架构 将数据管理和计算节点融合简化了传统 Hadoop 生态的复杂架构。丰富的生态 支持从 Kafka、HDFS、S3 等多种数据源进行数据导入并与 Flink、Spark、DolphinScheduler 等大数据组件无缝集成。1.2 为什么需要单机版部署Doris 支持分布式集群部署但在很多场景下单机版部署是更合适的选择个人学习与开发测试 作为开发者你需要在本地搭建一个环境来学习 SQL 语法、测试数据导入流程、验证查询性能。单机版部署简单快捷资源消耗小。功能验证与 POC 在为企业选型或进行项目概念验证时需要在可控的环境下快速验证 Doris 的核心功能是否满足业务需求。单机版足以完成大部分功能测试。降低入门门槛 对于初学者而言直接部署分布式集群会面临网络、配置、资源协调等多重复杂性。单机版部署让你可以专注于 Doris 本身的功能而不是集群管理。资源受限环境 在个人电脑、开发服务器或云上小规格虚拟机中单机版部署是唯一可行的方案。重要提示 官方文档明确指出无论是 Docker 部署还是手动部署的单机实例都仅适用于本地开发和测试严禁用于生产环境。主要原因在于数据易丢失容器销毁或机器宕机且不具备数据多副本的高可用能力。2. 环境准备与版本说明在开始部署前请确保你的环境满足以下基本要求。我们将以最常见的 Linux 环境如 Ubuntu/CentOS为例进行说明同时也会涵盖 macOS 的注意事项。2.1 系统与环境要求操作系统 推荐使用主流 Linux 发行版如 Ubuntu 20.04/22.04 LTS、CentOS 7/8、Rocky Linux 8/9。本文演示环境为Ubuntu 22.04。macOS 同样支持但部分系统调优步骤略有不同。Java 环境 Doris 的 FEFrontend和 BEBackend服务均基于 Java 开发。强烈建议使用 Java 8 或 Java 11。虽然官方也支持 Java 17但为了最大兼容性我们选择 Java 11。你可以通过以下命令检查java -version如果未安装可以使用包管理器安装 OpenJDK 11# Ubuntu/Debian sudo apt update sudo apt install openjdk-11-jdk # CentOS/Rocky Linux sudo yum install java-11-openjdk-devel用户权限强烈建议创建一个专用的系统用户来运行 Doris避免使用 root 用户以提高安全性。sudo useradd -r -m -s /bin/bash doris sudo passwd doris # 设置密码后续切换用户使用网络与端口 确保以下端口在本地防火墙如firewalld或ufw中是开放的或者直接关闭防火墙进行测试FE 8030 (HTTP), 9020 (BRPC), 9030 (MySQL)BE 8040 (HTTP), 9050 (Heartbeat), 9060 (BRPC), 8060 (BRPC) 单机部署时这些端口都在本机回环地址127.0.0.1上监听通常无需额外配置。2.2 部署方式选择本文提供两种部署方式你可以根据自身情况选择Docker 快速部署推荐给只想快速体验的用户 自 Doris 2.1.8 版本起官方提供了 Docker 快速启动脚本。这种方式最快捷适合快速体验和功能验证但数据持久化需要额外配置。手动二进制部署推荐给需要深入理解和定制化的用户 下载官方编译好的二进制包手动配置和启动各个服务。这种方式步骤稍多但能让你更清晰地理解 Doris 的架构和配置数据也存储在宿主机上更易于管理。接下来我们将分别详细讲解这两种方式。3. 方式一使用 Docker 快速部署单机 Doris如果你已经安装了 Docker 和 Docker Compose这是最快上手 Doris 的方式。整个过程只需几分钟。3.1 安装 Docker 与 Docker Compose如果你的系统尚未安装 Docker请先进行安装。以 Ubuntu 为例# 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release # 添加 Docker 官方 GPG 密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装 Docker Engine sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin # 启动 Docker 服务并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 验证安装 sudo docker run hello-world # 可选将当前用户加入 docker 组避免每次使用 sudo sudo usermod -aG docker $USER # 执行后需要退出当前终端重新登录生效macOS 用户 请直接下载并安装 Docker Desktop for Mac 。安装后在终端中应能直接使用docker命令。3.2 下载并运行 Doris Quick-Start 脚本官方提供了一个一键启动脚本它会拉取包含 FE 和 BE 的 Docker 镜像并启动容器。下载启动脚本# 创建一个工作目录 mkdir ~/doris-docker cd ~/doris-docker # 下载官方快速启动脚本 curl -O https://raw.githubusercontent.com/apache/doris/master/docker/quick-start/start-doris.sh # 赋予脚本执行权限 chmod x start-doris.sh启动 Doris 集群 使用-v参数指定要启动的 Doris 版本。建议使用较新的稳定版如3.0.8。./start-doris.sh -v 3.0.8脚本执行后会依次完成以下操作拉取指定版本的apache/doris镜像。启动一个 FE 容器和一个 BE 容器。自动初始化集群并将 BE 节点注册到 FE。在宿主机上映射出关键端口如 8030, 9030。等待脚本执行完毕看到类似Doris cluster is running, you can connect to it via mysql client的提示即表示启动成功。3.3 连接与验证集群状态Doris 使用 MySQL 协议因此我们可以直接用mysql客户端连接。安装 MySQL 客户端如果尚未安装# Ubuntu/Debian sudo apt install mysql-client-core-8.0 # 或者安装完整的 mysql-client # sudo apt install mysql-client # CentOS/Rocky Linux sudo yum install mysql连接 Doris 默认用户名为root密码为空端口为9030主机为127.0.0.1。mysql -uroot -P9030 -h127.0.0.1如果连接成功你会看到 MySQL 的命令行提示符MySQL [(none)]。检查 FE 状态 在 MySQL 客户端中执行SHOW FRONTENDS\G或者使用搜索材料中的命令mysql -uroot -P9030 -h127.0.0.1 -e SELECT host, join, alive FROM frontends()预期输出中Alive和Join列都应为true。检查 BE 状态SHOW BACKENDS\G或mysql -uroot -P9030 -h127.0.0.1 -e SELECT host, alive FROM backends()预期输出中Alive列应为true或1。至此一个基于 Docker 的单机版 Doris 集群已经成功运行。你可以跳过第 4 章直接阅读第 5 章进行基本操作测试。4. 方式二手动部署单机 Doris二进制包手动部署能让你更深入地理解 Doris 的组件和配置是学习 Doris 架构的推荐方式。4.1 下载 Doris 二进制包访问 Apache Doris 下载页面 选择最新的稳定版本如 3.0.8。下载对应你系统架构的二进制包通常是x86_64。# 切换到之前创建的 doris 用户或在 doris 用户下操作 sudo su - doris # 创建安装目录并进入 mkdir -p /home/doris/software cd /home/doris/software # 以 3.0.8 版本为例下载二进制包 # 请替换链接为官网最新的下载链接 wget https://archive.apache.org/dist/doris/3.0.8/apache-doris-3.0.8-bin-x86_64.tar.xz # 解压 tar -xvf apache-doris-3.0.8-bin-x86_64.tar.xz # 重命名目录以便管理 mv apache-doris-3.0.8-bin-x86_64 apache-doris-3.0.8 cd apache-doris-3.0.8解压后的目录结构如下apache-doris-3.0.8/ ├── fe/ # Frontend 目录 ├── be/ # Backend 目录 ├── broker/ # Broker 目录用于外部数据访问单机测试可选 ├── dependencies/ # 依赖库 └── udf/ # 用户自定义函数4.2 系统环境调优为了 Doris 能稳定运行需要对 Linux 系统参数进行一些调整。修改文件句柄数限制 Doris 会打开大量文件需要提高系统允许的最大文件句柄数。# 编辑 limits.conf 文件需要 root 权限 sudo vi /etc/security/limits.conf在文件末尾添加以下内容* soft nofile 65535 * hard nofile 65535*代表对所有用户生效。保存退出后需要重新登录当前用户doris才能使配置生效。修改虚拟内存区域数量 BE 进程可能需要较多的内存映射区域。# 编辑 sysctl.conf sudo vi /etc/sysctl.conf在文件末尾添加vm.max_map_count2000000保存后执行以下命令使配置立即生效sudo sysctl -p4.3 部署与启动 Frontend (FE)FE 是 Doris 的前端节点负责元数据管理、查询解析和规划、集群管理等。配置 FE 进入 FE 的配置目录复制样例配置文件并修改。cd /home/doris/software/apache-doris-3.0.8/fe cp conf/fe.conf.template conf/fe.conf vi conf/fe.conf找到并修改以下关键配置其他保持默认即可# 指定 JAVA_HOME根据你的实际路径修改 JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64 # 优先级网络配置用于指定 FE 监听的 IP。单机部署设为本地回环地址。 priority_networks 127.0.0.1/32 # 可选元数据目录默认在 FE 目录下的 doris-meta # meta_dir ${DORIS_HOME}/doris-meta启动 FE./bin/start_fe.sh --daemon使用--daemon参数让其在后台运行。查看日志确认启动是否成功tail -f log/fe.log当看到日志中出现thrift server started with port 9020和start query http server 8030 success等字样并且没有持续报错时通常表示 FE 启动成功。初次访问并设置 root 密码 FE 启动后首次需要通过 MySQL 客户端连接并进行初始化。mysql -uroot -P9030 -h127.0.0.1连接成功后建议立即修改 root 用户密码SET PASSWORD FOR root PASSWORD(your_new_password);然后执行SHOW FRONTENDS;检查 FE 状态应该能看到自己刚启动的节点且Alive为true。4.4 部署与启动 Backend (BE)BE 是 Doris 的后端节点负责数据存储和查询执行。配置 BE 进入 BE 的配置目录。cd /home/doris/software/apache-doris-3.0.8/be cp conf/be.conf.template conf/be.conf vi conf/be.conf修改关键配置# 指定 JAVA_HOME JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64 # 优先级网络配置同样指定为本地回环地址 priority_networks 127.0.0.1/32 # 重要配置数据存储路径可以配置多个用分号隔开 # 确保 doris 用户对该目录有读写权限 storage_root_path /home/doris/data/doris-storage创建数据存储目录mkdir -p /home/doris/data/doris-storage启动 BE./bin/start_be.sh --daemon查看 BE 启动日志tail -f log/be.log等待日志中出现heartbeat success等字样。将 BE 节点添加到集群 回到 MySQL 客户端如果已退出重新连接执行以下命令将 BE 注册到 FE-- 你的 BE 的 IP 和 heartbeat_port (默认9050) ALTER SYSTEM ADD BACKEND 127.0.0.1:9050;执行成功后使用SHOW BACKENDS\G命令查看 BE 状态。等待几分钟直到Alive列变为true。你还会看到TotalCapacity总容量等信息。4.5 验证单机集群完成以上步骤后你的单机 Doris 集群1 FE 1 BE就部署完成了。再次使用SHOW FRONTENDS;和SHOW BACKENDS;命令确保两个服务都是Alive状态。5. 基础操作与快速测试部署完成后我们通过一个简单的例子来验证 Doris 是否工作正常。创建数据库和表-- 连接 Doris如果设置了密码请使用 -p 参数 mysql -uroot -P9030 -h127.0.0.1 -p -- 创建测试数据库 CREATE DATABASE test_db; USE test_db; -- 创建一张测试表 CREATE TABLE IF NOT EXISTS example_table ( user_id INT COMMENT 用户ID, date DATE COMMENT 数据灌入日期, city VARCHAR(20) COMMENT 用户所在城市, age SMALLINT COMMENT 用户年龄, sex TINYINT COMMENT 用户性别, last_visit_date DATETIME REPLACE DEFAULT 1970-01-01 00:00:00 COMMENT 用户最后一次访问时间, cost BIGINT SUM DEFAULT 0 COMMENT 用户总消费, max_dwell_time INT MAX DEFAULT 0 COMMENT 用户最大停留时间, min_dwell_time INT MIN DEFAULT 99999 COMMENT 用户最小停留时间 ) AGGREGATE KEY(user_id, date, city, age, sex) -- 指定聚合模型和Key列 DISTRIBUTED BY HASH(user_id) BUCKETS 10 -- 分桶方式 PROPERTIES( replication_num 1 -- 因为单机副本数设为1 );这里我们创建了一个聚合模型Aggregate Key的表这是 Doris 用于预聚合加速查询的典型模型。插入测试数据INSERT INTO example_table (user_id, date, city, age, sex, last_visit_date, cost, max_dwell_time, min_dwell_time) VALUES (10001, 2024-07-01, 北京, 25, 1, 2024-07-01 10:00:00, 100, 30, 10), (10002, 2024-07-01, 上海, 30, 0, 2024-07-01 11:00:00, 200, 45, 15), (10003, 2024-07-02, 广州, 28, 1, 2024-07-02 12:00:00, 150, 20, 5);执行查询-- 查询所有数据 SELECT * FROM example_table ORDER BY user_id; -- 进行聚合查询 SELECT city, SUM(cost) as total_cost, AVG(age) as avg_age FROM example_table GROUP BY city;如果查询能正常返回结果说明你的单机 Doris 集群已经完全就绪可以开始进行更深入的功能探索了。6. 常见问题与排查思路在部署和运行过程中你可能会遇到一些问题。下面列出一些常见问题及其解决方法。问题现象可能原因排查与解决思路MySQL 客户端连接被拒绝1. FE 服务未启动。2. 端口号错误不是9030。3. 防火墙阻止了连接。1. 检查 FE 进程 ps auxSHOW BACKENDS显示 Alive 为 false1. BE 服务未启动。2. BE 与 FE 网络不通。3. BE 注册后心跳尚未完成。1. 检查 BE 进程 ps aux启动 FE/BE 时报java.lang.OutOfMemoryErrorJVM 堆内存不足。修改对应配置文件fe.conf或be.conf中的JAVA_OPTS增加-Xmx参数例如-Xmx4096m4GB。Docker 部署时数据丢失容器停止或删除后容器内数据会丢失。Docker 方式默认数据在容器内。如需持久化需要在运行脚本或docker run命令时使用-v参数将容器内目录挂载到宿主机。官方 Quick-Start 脚本默认未配置持久化。ALTER SYSTEM ADD BACKEND失败1. 端口被占用。2. BE 的storage_root_path目录权限不对。1. 检查9050heartbeat端口是否被其他进程占用。2. 确保storage_root_path指定的目录存在且运行 BE 的用户如doris有读写权限。查询或导入数据时速度慢单机资源CPU、内存、磁盘IO不足。单机版主要用于功能验证性能有限。对于性能测试建议使用配置更高的机器或增加 BE 节点组成集群。检查系统监控如top,iostat确认资源瓶颈。通用排查步骤查日志 遇到任何问题首先查看对应组件的日志文件fe/log/fe.warn.log,be/log/be.warn.log错误信息通常非常明确。查进程 使用jps或ps aux | grep doris确认 FE 和 BE 的 Java 进程是否存在。查端口 使用netstat -tlnp | grep -E 8030|9030|9050等命令检查关键端口是否在监听。7. 生产环境考量与最佳实践虽然本文主题是单机部署但了解从单机到生产的差距至关重要。高可用与数据安全生产环境必须部署多副本。Doris 通过设置replication_num默认为3来保证数据在多个 BE 节点上有副本。单机单副本无法容忍任何节点故障。FE 也需要部署多个通常为 1 个 Leader 2 个 Follower以实现高可用通过 Apache ZooKeeper 或 BDBJE 进行选主。资源规划FE 对 CPU 要求不高但需要足够内存来存储元数据通常 8GB。建议使用 SSD 磁盘存放元数据目录meta_dir以提升性能。BE 是资源消耗的主力。需要大量的 CPU 核心进行向量化计算大内存用于缓存和查询高速磁盘SSD/NVMe用于数据存储。storage_root_path应指向性能最好、容量足够的磁盘。配置优化JVM 参数 根据机器内存调整fe.conf和be.conf中的JAVA_OPTS。例如 BE 可以设置为-Xmx8192m -Xms8192m -XX:UseG1GC。并发配置 调整be.conf中的push_write_mbytes_per_sec、max_compaction_threads等参数以适应数据导入和压缩负载。查询优化 合理设计表结构选择正确的数据模型、分区、分桶建立合适的物化视图和索引。监控与运维Doris 提供了丰富的监控指标可以通过 FE 的 HTTP 端口默认8030访问 Web UI查看系统状态、查询、导入等信息。集成 Prometheus 和 Grafana 进行更专业的监控和告警。定期检查集群节点状态、磁盘使用率、查询慢日志等。备份与恢复定期对集群元数据进行备份BACKUP命令。规划数据恢复演练流程。对于从单机测试转向生产部署强烈建议详细阅读 Apache Doris 官方文档 中关于集群部署、数据表设计、数据导入和运维管理的章节。单机版 Doris 的部署是探索这个强大分析型数据库的第一步。通过本文的两种方式你应该已经能够在自己的机器上成功启动一个可用的 Doris 环境并完成了基础的建表、插入和查询操作。理解了这个过程就为后续学习更高级的特性如物化视图、Rollup、数据导出、外部表等和进行集群部署打下了坚实的基础。建议接下来可以尝试使用 Stream Load 或 Routine Load 从文件或 Kafka 导入真实数据体验 Doris 在数据实时分析方面的强大能力。如果在实践中遇到问题多查阅官方文档和社区资源大部分常见问题都能找到答案。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度