5 分钟快速入门
完成本教程后,你将能够
- 使用 Docker 在 5 分钟内启动一个完整的 Doris 集群
- 使用 MySQL 客户端连接集群并验证节点状态
- 创建数据库、表结构,并执行首次数据查询
选择你的部署方式
- 想快速体验? → 使用 Docker 部署,5 分钟搞定
- 想完整了解生产部署? → 本地完整部署,包含 FE/BE 分离配置
使用 Docker 快速部署
自最新版本起,可以使用 Docker 进行快速部署。
第 1 步(1/3):下载启动脚本
下载脚本,运行以下命令赋予执行权限:
chmod 755 start-doris.sh
第 2 步(2/3):启动集群
运行脚本启动集群(默认使用 4.0.1 版本):
bash start-doris.sh
如需指定版本,使用 -v 参数:
bash start-doris.sh -v 4.1.0
第 3 步(3/3):验证集群状态
使用 MySQL 客户端连接集群,检查 FE 和 BE 状态:
-- 目的:验证 FE 节点是否正常加入集群
-- 期望:Join 和 Alive 列均为 true
mysql -uroot -P9030 -h127.0.0.1 -e 'SELECT `host`, `join`, `alive` FROM frontends()'
-- 目的:验证 BE 节点是否正常心跳
-- 期望:Alive 列为 1
mysql -uroot -P9030 -h127.0.0.1 -e 'SELECT `host`, `alive` FROM backends()'
输出解析: Alive=true(FE)或 Alive=1(BE)表示节点运行正常。
本地完整部署
环境要求
- 操作系统: Ubuntu 等 AMD/ARM 主流 Linux 环境
- Java 环境: JDK 17+
- 用户权限: 推荐新建 Doris 用户,避免使用 root
第 1 步(1/4):下载二进制包
从 Apache Doris 下载页面 下载对应系统的二进制安装包,并解压到指定目录。
第 2 步(2/4):配置系统环境
修改最大文件句柄数(避免打开文件过多导致报错):
vi /etc/security/limits.conf
* soft nofile 1000000
* hard nofile 1000000
修改虚拟内存区域:
cat >> /etc/sysctl.conf << EOF
vm.max_map_count = 2000000
EOF
sysctl -p
第 3 步(3/4):部署 FE
-
配置 FE:编辑
apache-doris/fe/conf/fe.conf# 指定 Java 环境
JAVA_HOME=/home/doris/jdk
# 指定 FE 监听 IP(根据实际网段修改)
priority_networks=127.0.0.1/32 -
启动 FE:
apache-doris/fe/bin/start_fe.sh --daemon -
验证 FE 状态:
-- 目的:确认 FE 已启动并加入集群
-- 期望:Join=true, Alive=true, IsMaster=true
mysql -uroot -P9030 -h127.0.0.1 -e "show frontends;"
第 4 步(4/4):部署 BE
-
配置 BE:编辑
apache-doris/be/conf/be.conf# 指定 BE 监听 IP(需与 FE 的 priority_networks 在同一网段)
priority_networks=127.0.0.1/32 -
启动 BE:
apache-doris/be/bin/start_be.sh --daemon -
注册 BE 到集群:
-- 目的:将 BE 节点加入集群管理
ALTER SYSTEM ADD BACKEND "127.0.0.1:9050"; -
验证 BE 状态:
-- 目的:确认 BE 已注册且心跳正常
-- 期望:Alive=true
mysql -uroot -P9030 -h127.0.0.1 -e "show backends;"
运行首次查询
无论你使用 Docker 还是本地部署,集群启动后都可以执行以下步骤体验 Doris 的 SQL 功能。
连接集群
mysql -uroot -P9030 -h127.0.0.1
创建数据库和表
-- 目的:创建演示用数据库和表
create database demo;
use demo;
create table mytable
(
k1 TINYINT,
k2 DECIMAL(10, 2) DEFAULT "10.05",
k3 CHAR(10) COMMENT "string column",
k4 INT NOT NULL DEFAULT "1" COMMENT "int column"
)
COMMENT "my first table"
DISTRIBUTED BY HASH(k1) BUCKETS 1
PROPERTIES ("replication_num" = "1");
导入测试数据
-- 目的:插入几条测试数据
insert into mytable values
(1, 0.14, 'a1', 20),
(2, 1.04, 'b2', 21),
(3, 3.14, 'c3', 22),
(4, 4.35, 'd4', 23);
执行查询
-- 目的:验证数据导入成功
-- 期望:看到 4 行数据
select * from demo.mytable;
输出示例:
+------+------+------+------+
| k1 | k2 | k3 | k4 |
+------+------+------+------+
| 1 | 0.14 | a1 | 20 |
| 2 | 1.04 | b2 | 21 |
| 3 | 3.14 | c3 | 22 |
| 4 | 4.35 | d4 | 23 |
+------+------+------+------+
常见问题
Q: Docker 部署适合生产环境吗?
不适合。Docker 部署仅用于本地开发和测试,数据在容器销毁时会丢失。生产环境请使用本地完整部署或多节点部署。
Q: 如何在 Mac 上安装 Docker?
下载并安装 Docker Desktop。
Q: Mac 安装 Docker Desktop 后提示 "Docker environment not detected"?
创建符号链接:
sudo ln -s /Applications/Docker.app/Contents/Resources/bin/docker /usr/local/bin/docker
Q: Mac 上 Docker 报 "error getting credentials"?
删除 ~/.docker/config.json 中的 credsStore 字段作为临时方案。注意:这会以明文存储凭据,仅限本地开发环境使用。
Q: BE 节点添加后仍显示 "Dead"?
检查 BE 的 priority_networks 是否与 FE 所在网段一致,并确认 BE 端口(9050/9060/8040/8060)未被防火墙拦截。
Q: 如何确认集群整体健康?
执行 SHOW FRONTENDS; 和 SHOW BACKENDS;,确保所有节点的 Alive 列为 true。
下一步
- [数据建模指南]:了解 Doris 的数据模型与分区策略(NEXT-TODO)
- [SQL 操作入门]:学习数据导入、查询和更新(NEXT-TODO)
- [集群管理]:掌握生产级集群运维(NEXT-TODO)
警告(仅针对本地部署)
以下内容仅用于本地开发和测试,请勿用于生产环境:
- 数据易丢失: Docker 部署在容器销毁时会丢失数据;单副本实例不具备数据冗余能力。
- 单副本配置: 示例中的建表语句均为单副本,生产环境应使用多副本存储以保证数据可靠性。