starrocks 在 linux 上无法通过 apt/yum 一键安装,必须手动解压、配置并启动,且需严格满足 cpu 支持 avx2、jdk 版本匹配(2.5.x 用 jdk 11,3.x 用 jdk 17)、priority_networks 正确设置及 be 手动添加至集群等条件,任一缺失均导致静默失败。

StarRocks 在 Linux 上不能直接用 apt 或 yum install starrocks 一键装完就用——它没有系统级包管理器的默认仓库(除 CentOS 7 的 starrocks-fe 等少数 RPM 包外),必须手动解压 + 配置 + 启动,且 JDK、CPU 指令集、目录权限等环节极易出错。
确认 CPU 是否支持 AVX2 指令集
BE 进程启动失败、日志里出现 Illegal instruction,90% 是因为 CPU 不支持 AVX2。StarRocks 2.5+ 所有官方二进制包都依赖 AVX2。
- 执行:
cat /proc/cpuinfo | grep avx2 - 如果无输出,说明不支持,不能运行官方编译包(包括 2.5.22、3.x)
- 替代方案只有两个:
- 换支持 AVX2 的机器(Intel Haswell 及以后、AMD Zen 及以后基本都支持)
- 自行从源码编译(需安装完整 C++ 工具链,耗时长,不推荐新手)
JDK 版本和环境变量必须对齐
StarRocks 2.5.x 要求 JDK 11,3.x 起强制要求 JDK 17;混用会导致 FE/BE 启动卡死或报 NoClassDefFoundError。
- 下载匹配版本:JDK 11.0.19(对应 StarRocks 2.5.22)或 JDK 17.0.2+(对应 3.x)
-
JAVA_HOME必须在三个地方同时生效:-
/etc/profile全局生效(source /etc/profile) -
fe/conf/fe.conf中显式写JAVA_HOME = /path/to/jdk-11 -
be/conf/be.conf中同样写死JAVA_HOME
-
- 不要只靠
PATH,FE/BE 启动脚本会优先读配置文件里的JAVA_HOME
priority_networks 配置不对就无法组网
这是最常被忽略的网络配置项。不设或设错会导致 FE 找不到 BE、BE 注册失败、SHOW PROC '/backends'\G 显示 Alive = false。
- 值不是“监听地址”,而是本机实际网卡的 CIDR 表达式
- 正确示例(假设服务器内网 IP 是
192.168.50.142):priority_networks = 192.168.50.142/32 - 错误写法:
-
priority_networks = 192.168.50.142(缺掩码,BE 会绑定到 0.0.0.0,可能跨网段通信失败) -
priority_networks = 0.0.0.0/0(仅限单机测试,生产禁用,存在安全风险)
-
- FE 和 BE 的
priority_networks必须各自填自己的 IP,不能共用同一行
BE 加入集群前必须手动执行 ALTER SYSTEM
解压、配好、启动 start_be.sh,不代表 BE 就自动加入集群——它只是个孤立进程。
- 启动 BE 后,用 MySQL 客户端连 FE(端口
9030):mysql -h 192.168.50.142 -P9030 -uroot - 执行添加命令(注意端口是 BE 的
heartbeat_service_port,默认9050):ALTER SYSTEM ADD BACKEND "192.168.50.142:9050"; - 查看是否成功:
SHOW PROC '/backends'\G→ 确认Alive为true,IsHelper为true - 如果报错
backend already exists,说明之前加过但 BE 没起来,先DROP BACKEND再重试
真正的难点不在“怎么装”,而在于每个组件启动后是否真正被集群识别——这取决于 CPU、JDK、网络三者严丝合缝。少一个条件,start_be.sh 看似返回成功,其实后台早已静默退出。











