StarRocks官网:
https://docs.starrocks.io/zh/docs/introduction/StarRocks_intro/
部署前提条件
StarRocks 依靠 AVX2 指令集充分发挥其矢量化能力。因此,在生产环境中,强烈建议您将 StarRocks 部署于 x86 架构 CPU 的服务器上。
您可以在终端中运行以下命令来检查 CPU 是否支持 AVX2 指令集:
cat /proc/cpuinfo | grep avx2
说明
ARM 架构不支持 SIMD 指令集,因此在某些场景下的性能不及 x86 架构。我们只推荐您在开发环境中部署 ARM 架构下的 StarRocks。
https://docs.starrocks.io/zh/docs/deployment/plan_cluster/#cpu-%E5%92%8C%E5%86%85%E5%AD%98
wget https://releases.mirrorship.cn/starrocks/StarRocks-3.1.7.tar.gz
tar -xzvf StarRocks-3.1.7.tar.gz
路径/文件
|
说明
|
apache_hdfs_broker
|
Broker 节点的部署路径。自 StarRocks 2.5 起,您无需在一般场景中部署 Broker 节点。如果您确实需要在 StarRocks 集群中部署 Broker 节点,请参阅
部署 Broker 节点
了解详细说明。
|
fe
|
FE 节点的部署路径。
|
be
|
BE 节点的部署路径。
|
LICENSE.txt
|
StarRocks license 文件。
|
NOTICE.txt
|
StarRocks notice 文件。
|
以下操作在 FE 实例上执行
编辑fe.conf 根据实际情况分配内存资源
cd /opt/software/StarRocks-3.1.7/fe/conf/
vim fe.conf
创建元数据存储路径。建议将元数据存储在与 FE 部署文件不同的路径中。请确保此路径存在并且您拥有写入权限。
fe目录下创建文件夹 meta
mkdir -p /opt/software/StarRocks-3.1.7/fe/meta
在配置项 meta_dir 中指定元数据路径。
# 将 <meta_dir> 替换为您已创建的元数据目录。
meta_dir = /opt/software/StarRocks-3.1.7/fe/meta
如果任何在 环境配置清单 中提到的 FE 端口被占用,您必须在 FE 配置文件中为其分配其他可用端口。(这里我没有做更改 使用默认的)
http_port = aaaa # 默认值:8030
rpc_port = bbbb # 默认值:9020
query_port = cccc # 默认值:9030
edit_log_port = dddd # 默认值:9010
启动 FE 节点。
./fe/bin/start_fe.sh --daemon
查看FE日志,检查是否启动成功:
cat fe/log/fe.log | grep thrift
说明该 FE 节点启动成功
部署BE节点
以下操作在 BE 实例上执行。
创建数据存储路径。建议将数据存储在与 BE 部署文件不同的路径中。请确保此路径存在并且您拥有写入权限。
# 将 <storage_root_path> 替换为您要创建的数据存储路径。
mkdir -p /opt/software/StarRocks-3.1.7/be/bestorage
进入先前准备好的 StarRocks BE 部署文件所在路径,修改 BE 配置文件 be/conf/be.conf。
在配置项 storage_root_path 中指定数据存储路径。
# 将 <storage_root_path> 替换为您创建的数据存储路径。
storage_root_path = /opt/software/StarRocks-3.1.7/be/bestorage
如果任何在 环境配置清单 中提到的 BE 端口被占用,您必须在 BE 配置文件中为其分配其他可用端口。(我这边没做任何更改)
be_port = vvvv # 默认值:9060
be_http_port = xxxx # 默认值:8040
heartbeat_service_port = yyyy # 默认值:9050
brpc_port = zzzz # 默认值:8060
启动BE:
./be/bin/start_be.sh --daemon
cat be/log/be.INFO | grep heartbeat
说明
在一个 StarRocks 集群中部署并添加至少 3 个 BE 节点后,这些节点将自动形成一个 BE 高可用集群。
(可选)启动 CN 服务
Compute Node(CN)是一种无状态的计算服务,本身不存储数据。您可以通过添加 CN 节点为查询提供额外的计算资源。您可以使用 BE 部署文件部署 CN 节点。CN 节点自 v2.4 版本起支持。
进入先前准备好的 StarRocks BE 部署文件所在路径,修改 CN 配置文件 be/conf/cn.conf。
如果任何在 环境配置清单 中提到的 CN 端口被占用,您必须在 CN 配置文件中为其分配其他可用端口。(我这边没有做更改)
be_port = vvvv # 默认值:9060
be_http_port = xxxx # 默认值:8040
heartbeat_service_port = yyyy # 默认值:9050
brpc_port = zzzz # 默认值:8060
启动 CN 节点。
./be/bin/start_cn.sh —daemon
## 查看 CN 日志,检查 CN 节点是否启动成功。
cat be/log/cn.INFO | grep heartbeat
在其他实例上重复以上步骤,即可启动新的 CN 节点。
注意 所有的规划建议都起3个节点
补充传输过程
fe配置文件传输其他节点:
be配置文件传输其他节点:
注意还有其他节点的数据目录
mkdir -p /opt/software/StarRocks-3.1.7/fe/meta
mkdir -p /opt/software/StarRocks-3.1.7/be/bestorage
启动fe
/opt/software/StarRocks-3.1.7/fe/bin/start_fe.sh --daemon
启动be
/opt/software/StarRocks-3.1.7/be/bin/start_be.sh --daemon
启动cn
/opt/software/StarRocks-3.1.7/be/bin/start_cn.sh --daemon
搭建集群
当所有 FE、BE、CN 节点启动成功后,即可搭建 StarRocks 集群。
以下过程在 MySQL 客户端实例上执行。您必须安装 MySQL 客户端(5.5.0 或更高版本)。
通过 MySQL 客户端连接到 StarRocks。您需要使用初始用户 root 登录,密码默认为空。
# 将 <fe_address> 替换为 Leader FE 节点的 IP 地址(priority_networks)或 FQDN,
# 并将 <query_port>(默认:9030)替换为您在 fe.conf 中指定的 query_port。
mysql -h 172.16.121.89 -P 9030 -u root
查看 Leader FE 节点状态:
SHOW PROC '/frontends'\G
* 如果字段 Alive 为 true,说明该 FE 节点正常启动并加入集群。
* 如果字段 Role 为 FOLLOWER,说明该 FE 节点有资格被选为 Leader FE 节点。
* 如果字段 Role 为 LEADER,说明该 FE 节点为 Leader FE 节点。
添加其他FE节点,角色也分为FOLLOWER,OBSERVER
alter system add follower "172.16.121.123:9010";
alter system add follower "172.16.120.111:9010";
全部启动完毕后,再使用mysql客户端查看FE的状况,alive全显示true则无问题
show proc '/frontends'\G
mysql> SHOW PROC '/frontends'\G
*************************** 1. row ***************************
Name: 172.16.120.111_9010_1705327612021
IP: 172.16.120.111
EditLogPort: 9010
HttpPort: 8030
QueryPort: 0
RpcPort: 0
Role: FOLLOWER
ClusterId: 805273620
Join: false
Alive: false
ReplayedJournalId: 0
LastHeartbeat: NULL
IsHelper: true
ErrMsg:
StartTime: NULL
Version: NULL
*************************** 2. row ***************************
Name: 172.16.121.89_9010_1705325167466
IP: 172.16.121.89
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: LEADER
ClusterId: 805273620
Join: true
Alive: true
ReplayedJournalId: 754
LastHeartbeat: 2024-01-15 22:06:56
IsHelper: true
ErrMsg:
StartTime: 2024-01-15 21:36:52
Version: 3.1.7-7e897e2
*************************** 3. row ***************************
Name: 172.16.121.123_9010_1705327611848
IP: 172.16.121.123
EditLogPort: 9010
HttpPort: 8030
QueryPort: 0
RpcPort: 0
Role: FOLLOWER
ClusterId: 805273620
Join: false
Alive: false
ReplayedJournalId: 0
LastHeartbeat: NULL
IsHelper: true
ErrMsg:
StartTime: NULL
Version: NULL
3 rows in set (0.03 sec)
添加 BE 节点至集群。
-- 将 <be_address> 替换为 BE 节点的 IP 地址(priority_networks)或 FQDN,
-- 并将 <heartbeat_service_port>(默认:9050)替换为您在 be.conf 中指定的 heartbeat_service_port。
ALTER SYSTEM ADD BACKEND "<be_address>:<heartbeat_service_port>", "<be2_address>:<heartbeat_service_port>", "<be3_address>:<heartbeat_service_port>”;
———以上是例子———
说明
您可以通过一条 SQL 添加多个 BE 节点。每对 <be_address>:<heartbeat_service_port> 代表一个 BE 节点。
---------------
ALTER SYSTEM ADD BACKEND "172.16.121.89:9050","172.16.121.123:9050","172.16.120.111:9050";
执行以下 SQL 查看 BE 节点状态。
SHOW PROC '/backends'\G
结果:
mysql> SHOW PROC '/backends'\G
*************************** 1. row ***************************
BackendId: 11003
IP: 172.16.120.111
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2024-01-15 22:01:56
LastHeartbeat: 2024-01-15 22:02:06
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 0
DataUsedCapacity: 0.000 B
AvailCapacity: 80.176 GB
TotalCapacity: 88.972 GB
UsedPct: 9.89 %
MaxDiskUsedPct: 9.89 %
ErrMsg:
Version: 3.1.7-7e897e2
Status: {"lastSuccessReportTabletsTime":"2024-01-15 22:01:56"}
DataTotalCapacity: 80.176 GB
DataUsedPct: 0.00 %
CpuCores: 16
NumRunningQueries: 0
MemUsedPct: 0.02 %
CpuUsedPct: 0.0 %
*************************** 2. row ***************************
BackendId: 11002
IP: 172.16.121.123
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2024-01-15 22:01:51
LastHeartbeat: 2024-01-15 22:02:06
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 0
DataUsedCapacity: 0.000 B
AvailCapacity: 66.174 GB
TotalCapacity: 88.972 GB
UsedPct: 25.62 %
MaxDiskUsedPct: 25.62 %
ErrMsg:
Version: 3.1.7-7e897e2
Status: {"lastSuccessReportTabletsTime":"2024-01-15 22:01:51"}
DataTotalCapacity: 66.174 GB
DataUsedPct: 0.00 %
CpuCores: 16
NumRunningQueries: 0
MemUsedPct: 0.02 %
CpuUsedPct: 0.0 %
*************************** 3. row ***************************
BackendId: 11001
IP: 172.16.121.89
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2024-01-15 22:02:01
LastHeartbeat: 2024-01-15 22:02:06
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 0
DataUsedCapacity: 0.000 B
AvailCapacity: 63.015 GB
TotalCapacity: 88.972 GB
UsedPct: 29.17 %
MaxDiskUsedPct: 29.17 %
ErrMsg:
Version: 3.1.7-7e897e2
Status: {"lastSuccessReportTabletsTime":"2024-01-15 22:02:02"}
DataTotalCapacity: 63.015 GB
DataUsedPct: 0.00 %
CpuCores: 16
NumRunningQueries: 0
MemUsedPct: 0.02 %
CpuUsedPct: 0.0 %
3 rows in set (0.01 sec)
如果字段 Alive 为 true,说明该 BE 节点正常启动并加入集群。
给root设置密码:
SET PASSWORD = PASSWORD('123456');