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。

内存
StarRocks 对内存没有特定要求。关于推荐的内存大小,
请参考 规划 StarRocks 集群 - CPU 和内存:
https://docs.starrocks.io/zh/docs/deployment/plan_cluster/#cpu-%E5%92%8C%E5%86%85%E5%AD%98
存储
StarRocks 支持 HDD 和 SSD 作为存储介质。
在实时数据分析场景、以及涉及大量数据扫描或随机磁盘访问的场景下,强烈建议您选择 SSD 作为存储介质。
在涉及 主键模型 持久化索引的场景中,您必须使用 SSD 作为存储介质。
网络
建议使用万兆网络连接(10 Gigabit Ethernet,简称 10 GE)确保 StarRocks 集群内数据能够跨节点高效传输。
操作系统
StarRocks 支持在 CentOS Linux 7.9 和 Ubuntu Linux 22.04 上部署。
软件
您必须在服务器上安装 JDK 8 以运行 StarRocks。v2.5 及以上版本建议安装 JDK 11。
安装 StarRocks
下载软件包
wget https://releases.mirrorship.cn/starrocks/StarRocks-3.1.7.tar.gz
1.上传并解压安装包
上传 StarRocks 并解压二进制安装包。
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 实例,将路径 be 分发至所有 BE 或 CN 实例以用于手动部署
手动部署 StarRocks--存算一体模式部署

以下操作在 FE 实例上执行

编辑fe.conf 根据实际情况分配内存资源
cd /opt/software/StarRocks-3.1.7/fe/conf/
vim fe.conf
官方默认是8G,可根据实际情况调整,我这里就不改了

创建元数据存储路径。建议将元数据存储在与 FE 部署文件不同的路径中。请确保此路径存在并且您拥有写入权限。

fe目录下创建文件夹 meta
mkdir -p /opt/software/StarRocks-3.1.7/fe/meta
修改 FE 配置文件 fe/conf/fe.conf。 

在配置项 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');

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐