Arm服务器下部署StarRocks2.5.14和3.3版本
本文主要介绍arm服务器下通过docker部署starrocks-2.5.14-all-in-one和starrocks-3.3版本的方案。
StarRocks作为一款开源的高性能MPP(Massive Parallel Processing)分析型数据库,主要面向实时数据分析、交互式查询、大规模报表与数据湖分析场景。
StarRocks在X86服务器上部署的教程比较多,由于业务场景,需要在ARM服务器上部署StarRocks的需求。经过调研和实践,总结出成功部署的方案。分别是2.5.14的all-in-one版本和3.3的分布式部署版本,部署之后能够成功运行。两种部署方案都是通过docer来部署的,因此服务器上要先安装好docker。
2.5.14
(1)先执行以下命令查看操作系统是否是arm
uname -m
如果出现aarch64就是arm服务器

(2)拉取starrocks镜像
docker pull starrocks/allin1-ubuntu:2.5.14@sha256:1844ad93cec87907ea1652e98a0c122788f8bf14348c5ca646a82d5a1652c1b3
执行之后会看到如下日志:

(3)查看拉下来的镜像
docker images | grep allin1

(4)给镜像补一个tag,后续可以通过tag访问
docker tag ea513337bad4 starrocks/allin1-ubuntu:2.5.14
(5)导出保存镜像文件到当前所在目录
docker save -o allin1-ubuntu-arm64.tar starrocks/allin1-ubuntu-arm64:2.5.14
(6)把镜像加载进docker
docker load -i allin1-ubuntu-arm64.tar
(7)使用docker-compose部署,先新建好各个目录及配置文件
pwd
mkdir -p /yourpath/fe/data
mkdir -p /yourpath/fe/meta
mkdir -p /yourpath/be/data
mkdir -p /yourpath/be/storage
vim docker-compose.yml
然后将以下配置内容输入进文件中(要注意的是MYSQL_PWD在首次启动时可以先注释掉,带启动起来之后重新设置密码,再把注释打开,因为刚开始是默认为无密码,需要在起起来之后进入starrocks中重新设置以下才可以;另外配置文件中ports里面的映射端口一定要确保没有被占用---> 宿主机端口:容器端口)
version: '2.33'
services:
starrocks:
image: starrocks/allin1-ubuntu-arm64:2.5.14
container_name: starrocks
restart: always
ports:
- "8030:8030"
- "9020:8040"
- "9030:9030"
volumes:
- ./fe/data:/data/deploy/starrocks/fe/data
- ./fe/meta:/data/deploy/starrocks/fe/meta
- ./be/data:/data/deploy/starrocks/be/data
- ./be/storage:/data/deploy/starrocks/be/storage
environment:
MYSQL_PWD: "starrocks@2025" # 密码可以自己设置
STARROCKS_ENABLE_LICENSE_ACTIVATION: "true"
ulimits:
nofile:
soft: 65536
hard: 65536
(8)通过以下命令启动starrocks
docker-compose -f docker-compose.yml -up -d
(9)看看容器起来没
docker ps | grep starrocks
能看到类似的starrocks starrocks/allin1-ubuntu-arm64:2.5.14 ...字段就说明容器在跑
可以看看日志有没有明显报错
docker logs -f starrocks
如果没有明显的ERROR、failed to init meta、be start failed等字段就说明没问题
(10)通过Mysql客户端练一下看看
mysql -uroot -h127.0.0.1 -P9030
如果出现以下界面就说明能连上没有问题

(11)可以在当前界面设置一下密码
SET PASSWORD = PASSWORD('starrocks@2025')
(12)之后重新进入一下试试
quit;
mysql -uroot -p -h127.0.0.1 -P9030
通过管理工具Navicat或者dbeaver连接一下starrocks并建表试试看,如果可以建表并能够插入数据就可以。
--建表语句
CREATE TABLE t1 (
id INT,
name VARCHAR(50)
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id)
BUCKETS 1
PROPERTIES("replication_num" = "1");
--插入数据
INSERT INTO t1 VALUES (1, 'hello'), (2, 'starrocks');
--查询数据
SELECT * FROM t1;
为了确保是在arm环境下的部署可以再通过一下语句查看docker内部CPU架构,一般会显示为aarch64就是在arm环境下。
docker exec -it starrocks bash
uname -m
至此就2.5.14版本的安装部署就完成了。
3.3版本
(1)首先建一个新的目录用作3.3版本的专用目录
mkdir -p /yourpath/starrocks3/fe/meta
mkdir -p /yourpath/starrocks3/fe/log
mkdir -p /yourpath/starrocks3/be/storage
mkdir -p /yourpath/starrocks3/be/log
(2)新建配置文件
vim docker-compose.yml
写入如下内容
version: "3.8"
services:
starrocks-fe:
image: starrocks/fe-ubuntu:3.3.5 # 或 3.3-latest / 3.4.x,看你业务版本
hostname: starrocks3-fe
container_name: starrocks3-fe
restart: unless-stopped
ulimits:
nofile:
soft: 65535
hard: 65535
user: root
command: |
bash /opt/starrocks/fe/bin/start_fe.sh --host_type FQDN
ports:
- "48030:8030" # FE HTTP
- "49030:9030" # FE MySQL
- "49020:9020" # FE RPC(可选暴露)
volumes:
- ./fe/meta:/opt/starrocks/fe/meta
- ./fe/log:/opt/starrocks/fe/log
starrocks-be:
image: starrocks/be-ubuntu:3.3.5
hostname: starrocks3-be
container_name: starrocks3-be
user: root
environment:
MYSQL_PWD: "starrocks@2025"
ulimits:
nofile:
soft: 65535
hard: 65535
depends_on:
- starrocks-fe
command: |
/bin/bash -c "
ulimit -n 65535;
ulimit -u 65535;
# 等 FE 起来
sleep 15s;
# 尝试向 FE 注册 BE(root 初始无密码)
mysql --connect-timeout 2 -h starrocks-fe -P 9030 -u root
-e 'ALTER SYSTEM ADD BACKEND "starrocks-be:9050";' || true;
# 启动 BE
bash /opt/starrocks/be/bin/start_be.sh
"
ports:
- "48040:8040" # BE HTTP
volumes:
- ./be/storage:/opt/starrocks/be/storage
- ./be/log:/opt/starrocks/be/log
(3)启动容器
此过程会有点漫长,因为会下载镜像
docker-compose -f docker-compose.yml up -d
(4)查看容器状态
docker ps | grep starrocks3
一般能看到FE和BE,但如果看不到BE不要慌,可接着执行下面的语句

检查FE日志
docker logs -f starrocks-fe
如果能看到FE start success、Alive: true等字段就说明启动成功了
进入FE
mysql -uroot -h127.0.0.1 -P49030
查看BE是否已经注册
SHOW BACKENDSG
如果出现IP:starrocks3-be和Alive:true就说明BE已经自动连上了;如下图所示

如果没出现就执行下列语句:
ALTER SYSTEM ADD BACKEND "starrocks-be:9050";
(5)修改密码
SET PASSWORD = PASSWORD('starrocks@2025');
然后可以通过数据库管理工具连接,建表。
以上就是ARM服务器下StarRocks两个版本的安装过程了。之所以有两个版本是因为第一个版本是主编自己在网上看的其他教程来部署的,但是部署之后发现2版本的分区语法和3版本的在建表时的分区语法不一样,所以就自己又摸索出了3版本的部署流程,希望能够帮到大家。










