You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
6.3 KiB
203 lines
6.3 KiB
好的,在本地搭建 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 的功能。
|