好的,在本地搭建 StarRocks 是一个非常常见的需求,用于开发、测试或学习。下面我将为你提供两种最常用且简单的方法:**使用 Docker(最简单推荐)** 和 **使用二进制文件直接部署**。 我会以 **macOS 或 Linux** 环境为例进行说明(Windows 用户强烈建议使用 WSL2 或 Docker Desktop)。 --- ### 方法一:使用 Docker 搭建(最快最方便,强烈推荐) 这种方法无需处理复杂的依赖关系,几条命令就能拉起一个完整的 StarRocks 集群(包含 1 个 FE 和 1 个 BE)。 #### 步骤 1:安装 Docker 确保你的本地环境已经安装了 Docker Desktop 或 Docker Engine。 * 官网下载: [https://www.docker.com/products/docker-desktop/](https://www.docker.com/products/docker-desktop/) * 安装后启动 Docker 服务。 #### 步骤 2:下载 StarRocks Docker 镜像 打开终端(Terminal),执行以下命令来下载官方镜像: ```bash docker pull starrocks/allin1-ubuntu ``` #### 步骤 3:启动 StarRocks 容器 使用以下命令启动一个容器: ```bash docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 --name starrocks -d starrocks/allin1-ubuntu ``` * `-p 9030:9030`: 将容器的 FE MySQL 查询端口映射到本地。 * `-p 8030:8030`: 将容器的 FE HTTP 端口(用于 Web 界面)映射到本地。 * `-p 8040:8040`: 将容器的 BE HTTP 端口映射到本地。 * `--name starrocks`: 为容器指定一个名字,方便后续操作。 * `-d`: 让容器在后台运行。 #### 步骤 4:进入容器并连接 1. **进入容器内部**: ```bash docker exec -it starrocks /bin/bash ``` 2. **使用 MySQL 客户端连接**: 在容器内部的命令行中,使用预装好的 MySQL 客户端连接至 StarRocks 的 FE。 ```bash mysql -P9030 -h127.0.0.1 -uroot --prompt="StarRocks > " ``` * 默认没有密码,直接回车即可。 #### 步骤 5:验证安装 连接成功后,你会看到 `StarRocks >` 提示符。执行一个简单的 SQL 来验证: ```sql SHOW FRONTENDS\G ``` 如果能看到 `Alive: true` 的节点信息,说明 FE 启动成功。 ```sql SHOW BACKENDS\G ``` 如果能看到 `Alive: true` 的节点信息,说明 BE 也启动成功。 **恭喜!至此,一个单机版的 StarRocks 集群就已经在 Docker 中运行起来了。** --- ### 方法二:使用二进制包在本地部署 这种方法更接近生产环境的部署方式,适合想要深入了解其组成和配置的用户。 #### 步骤 1:下载二进制包 访问 StarRocks 官网的 [下载页面](https://www.starrocks.io/zh-CN/download/community) ,选择适合你操作系统(Linux)的版本。通常下载 `.tar.gz` 格式的压缩包。 例如,使用 `wget` 下载: ```bash wget https://releases.starrocks.io/starrocks/StarRocks-3.2.6.tar.gz ``` #### 步骤 2:解压安装包 ```bash tar -xzvf StarRocks-3.2.6.tar.gz cd StarRocks-3.2.6 ``` #### 步骤 3:部署 FE(Frontend) 1. **进入 FE 目录并创建元数据目录**: ```bash cd fe && mkdir meta ``` 2. **修改 FE 配置文件** (`conf/fe.conf`): 对于本地测试,主要确保端口不被占用即可。如果需要调整 JVM 堆大小(如果机器内存小),可以修改: ```ini JAVA_OPTS = "-Xmx4096m -XX:+UseMembar -XX:SurvivorRatio=8 ..." ``` 将 `-Xmx4096m`(最大堆内存)改为 `-Xmx2048m`。 3. **启动 FE**: ```bash ./bin/start_fe.sh --daemon ``` 使用 `--daemon` 参数让它在后台运行。 4. **检查 FE 是否启动成功**: ```bash jps ``` 你应该能看到 `StarRocksFe` 进程。 也可以查看日志 `log/fe.log`,看到 `thrift server started` 和 `http server started` 等字样表示成功。 #### 步骤 4:部署 BE(Backend) 1. **打开一个新终端窗口**,进入 BE 目录: ```bash cd StarRocks-3.2.6/be ``` 2. **创建 BE 数据存储目录**: ```bash mkdir storage ``` 3. **修改 BE 配置文件** (`conf/be.conf`): 同样,本地测试主要关注端口和存储路径。确保 `storage_root_path` 配置正确: ```ini storage_root_path = /path/to/your/StarRocks-3.2.6/be/storage ``` 4. **启动 BE**: ```bash ./bin/start_be.sh --daemon ``` 5. **检查 BE 是否启动成功**: ```bash jps ``` 你应该能看到 `StarRocksBe` 进程。 查看日志 `log/be.INFO`,看到 ` heartbeat` 相关信息表示成功。 #### 步骤 5:将 BE 添加到集群中 现在 FE 和 BE 是两个独立的进程,需要通过 MySQL 客户端告诉 FE 有一个 BE 需要加入集群。 1. **使用 MySQL 客户端连接 FE**: ```bash # 在FE所在机器的StarRocks-3.2.6目录下操作 mysql -P9030 -h127.0.0.1 -uroot ``` 2. **执行添加 BE 的命令**: ```sql ALTER SYSTEM ADD BACKEND "127.0.0.1:9050"; ``` `9050` 是 BE 的心跳服务端口,默认就是 9050。 #### 步骤 6:验证集群状态 在 MySQL 客户端中执行: ```sql SHOW FRONTENDS\G SHOW BACKENDS\G ``` 如果两个节点的 `Alive` 字段均为 `true`,则表明本地集群搭建成功! --- ### 下一步:使用 StarRocks 1. **访问 Web UI**:在浏览器中打开 `http://127.0.0.1:8030`(Docker 方法端口是 8030,二进制方法默认也是 8030),可以使用内置的 Playground 进行 SQL 查询。 2. **创建数据库和表**: ```sql CREATE DATABASE test; USE test; CREATE TABLE test_table ( id INT, name VARCHAR(100) ) DUPLICATE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 8; ``` 3. **插入数据并查询**: ```sql INSERT INTO test_table VALUES (1, 'StarRocks'), (2, 'OLAP'); SELECT * FROM test_table; ``` ### 常见问题 * **端口冲突**:如果 9030, 8030, 8040 等端口被占用,可以在配置文件(方法二)或 Docker 启动命令(方法一)中修改为其他端口。 * **内存不足**:如果本地机器内存较小,请务必在 FE 和 BE 的配置文件中调小 `JAVA_OPTS` 和 `mem_limit` 等参数。 * **下载慢**:从国内下载 StarRocks 二进制包可能较慢,可以尝试使用镜像源。 对于初学者,**强烈建议从方法一(Docker)开始**,可以避免很多环境问题,让你快速专注于体验 StarRocks 的功能。