diff --git a/config/install_starrocks b/config/install_starrocks new file mode 100644 index 0000000..18e4cbd --- /dev/null +++ b/config/install_starrocks @@ -0,0 +1,203 @@ +好的,在本地搭建 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 的功能。 \ No newline at end of file