故梦丶
2025-12-20
点 赞
0
热 度
2
评 论
0

StarRocks单机部署

  1. 首页
  2. 技术
  3. StarRocks单机部署

文章摘要

智阅GPT

一、前期准备

  1. 查看CPU配置是否为AVX2

cat /proc/cpuinfo | grep avx2
  1. 运行环境配置

您必须在服务器上安装 JDK 8 以运行 StarRocks。v2.5 及以上版本建议安装 JDK 11。
​
注意
​
StarRocks 不支持 JRE。
如果您需要在 Ubuntu 22.04 上部署 StarRocks,则必须安装 JDK 11。
  1. 准备文件

# 以X86 ubuntu为例
​
wget https://releases.starrocks.io/starrocks/StarRocks-3.4.3-ubuntu-amd64.tar.gz

二、启动 Leader FE 节点

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

# 将 <meta_dir> 替换为您要创建的元数据目录。
mkdir -p <meta_dir>
  1. 进入先前准备好的StarRocks FE 部署文件所在路径,修改 FE 配置文件 fe/conf/fe.conf

    a. 在配置项 meta_dir 中指定元数据路径。

    # 将 <meta_dir> 替换为您已创建的元数据目录。
    meta_dir = <meta_dir>

    b. 如果任何在环境配置清单中提到的 FE 端口被占用,您必须在 FE 配置文件中为其分配其他可用端口。

    http_port = aaaa        # 默认值:8030
    rpc_port = bbbb         # 默认值:9020
    query_port = cccc       # 默认值:9030
    edit_log_port = dddd    # 默认值:9010

    注意

    如需在集群中部署多个 FE 节点,您必须为所有 FE 节点分配相同的 http_port

    c. 如需为集群启用 IP 地址访问,您必须在配置文件中添加配置项 priority_networks,为 FE 节点分配一个专有的 IP 地址(CIDR格式)。如需为集群启用 FQDN 访问,则可以忽略该配置项。

    priority_networks = x.x.x.x/x

    说明

    • 您可以在终端中运行 ifconfig 以查看当前实例拥有的 IP 地址。

    • 从 v3.3.0 开始,StarRocks 支持基于 IPv6 的部署。

    d. 如果您的实例安装了多个 JDK,并且您要使用 JDK 与环境变量 JAVA_HOME 中指定的不同,则必须在配置文件中添加配置项 JAVA_HOME 来指定所选该 JDK 的安装路径。

    # 将 <path_to_JDK> 替换为所选 JDK 的安装路径。
    JAVA_HOME = <path_to_JDK>

    e. 更多高级配置项请参考 参数配置 - FE 配置项

  2. 启动 FE 节点。

    • 如需为集群启用 IP 地址访问,请运行以下命令启动 FE 节点:

      ./fe/bin/start_fe.sh --daemon

    • 如需为集群启用 FQDN 访问,请运行以下命令启动 FE 节点::

      ./fe/bin/start_fe.sh --host_type FQDN --daemon

      您只需在第一次启动节点时指定参数 --host_type

      注意

      如需启用 FQDN 访问,在启动 FE 节点之前,请确保您已经在 /etc/hosts 中为所有实例分配了主机名。有关详细信息,请参考 环境配置清单 - 主机名

  3. 查看 FE 日志,检查 FE 节点是否启动成功。

    cat fe/log/fe.log | grep thrift

    如果日志打印以下内容,则说明该 FE 节点启动成功:

    "2022-08-10 16:12:29,911 INFO (UNKNOWN x.x.x.x_9010_1660119137253(-1)|1) [FeServer.start():52] thrift server started with port 9020."

三、(存算一体)启动 BE 服务

备注
只能将 BE 节点添加到存算一体集群中。不建议在存算分离集群中添加 BE 节点,否则可能导致未知行为。

以下操作在 BE 实例上执行。

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

    # 将 <storage_root_path> 替换为您要创建的数据存储路径。
    mkdir -p <storage_root_path>

  2. 进入先前准备好的 StarRocks BE 部署文件所在路径,修改 BE 配置文件 be/conf/be.conf

    a. 在配置项 storage_root_path 中指定数据存储路径。

    # 将 <storage_root_path> 替换为您创建的数据存储路径。
    storage_root_path = <storage_root_path>

    b. 如果任何在 环境配置清单 中提到的 BE 端口被占用,您必须在 BE 配置文件中为其分配其他可用端口。

    be_port = vvvv                   # 默认值:9060
    be_http_port = xxxx              # 默认值:8040
    heartbeat_service_port = yyyy    # 默认值:9050
    brpc_port = zzzz                 # 默认值:8060

    c. 如需为集群启用 IP 地址访问,您必须在配置文件中添加配置项 priority_networks,为 BE 节点分配一个专有的 IP 地址(CIDR格式)。如需为集群启用 FQDN 访问,则可以忽略该配置项。

    priority_networks = x.x.x.x/x

    说明

    • 您可以在终端中运行 ifconfig 以查看当前实例拥有的 IP 地址。

    • 从 v3.3.0 开始,StarRocks 支持基于 IPv6 的部署。

    d. 如果您的实例安装了多个 JDK,并且您要使用 JDK 与环境变量 JAVA_HOME 中指定的不同,则必须在配置文件中添加配置项 JAVA_HOME 来指定所选该 JDK 的安装路径。

    # 将 <path_to_JDK> 替换为所选 JDK 的安装路径。
    JAVA_HOME = <path_to_JDK>

    e. 更多高级配置项请参考 参数配置 - BE 配置项

  3. 启动 BE 节点。

    ./be/bin/start_be.sh --daemon

    注意

    • 如需启用 FQDN 访问,在启动 BE 节点之前,请确保您已经在 /etc/hosts 中为所有实例分配了主机名。有关详细信息,请参考 环境配置清单 - 主机名

    • 启动 BE 节点时无需指定参数 --host_type

  4. 查看 BE 日志,检查 BE 节点是否启动成功。

    cat be/log/be.INFO | grep heartbeat

    如果日志打印以下内容,则说明该 BE 节点启动成功:

    "I0614 17:41:39.782819 3717531 thrift_server.cpp:388] heartbeat has started listening port on 9050"

  5. 在其他 BE 实例上重复以上步骤,即可启动新的 BE 节点。

说明

在一个 StarRocks 集群中部署并添加至少 3 个 BE 节点后,这些节点将自动形成一个 BE 高可用集群。 如果您只想部署一个 BE 节点,您必须在 FE 配置文件 fe/conf/fe.conf 中设置 default_replication_num1

default_replication_num = 1

四、搭建集群

当所有 FE 和 BE/CN 节点启动成功后,即可搭建 StarRocks 集群。

以下过程在 MySQL 客户端实例上执行。您必须安装 MySQL 客户端(5.5.0 或更高版本)。

  1. 通过 MySQL 客户端连接到 StarRocks。您需要使用初始用户 root 登录,密码默认为空。

    # 将 <fe_address> 替换为 Leader FE 节点的 IP 地址(priority_networks)或 FQDN,
    # 并将 <query_port>(默认:9030)替换为您在 fe.conf 中指定的 query_port。
    mysql -h <fe_address> -P<query_port> -uroot

  2. 执行以下 SQL 查看 Leader FE 节点状态。

    SHOW PROC '/frontends'\G

    示例:

    MySQL [(none)]> SHOW PROC '/frontends'\G
    *************************** 1. row ***************************
                 Name: x.x.x.x_9010_1686810741121
                   IP: x.x.x.x
          EditLogPort: 9010
             HttpPort: 8030
            QueryPort: 9030
              RpcPort: 9020
                 Role: LEADER
            ClusterId: 919351034
                 Join: true
                Alive: true
    ReplayedJournalId: 1220
        LastHeartbeat: 2023-06-15 15:39:04
             IsHelper: true
               ErrMsg: 
            StartTime: 2023-06-15 14:32:28
              Version: 3.0.0-48f4d81
    1 row in set (0.01 sec)

    • 如果字段 Alivetrue,说明该 FE 节点正常启动并加入集群。

    • 如果字段 RoleFOLLOWER,说明该 FE 节点有资格被选为 Leader FE 节点。

    • 如果字段 RoleLEADER,说明该 FE 节点为 Leader FE 节点。

  3. 添加 BE/CN 节点至集群。

    • (存算一体)添加 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 节点。

    • (存算分离)添加 CN 节点。

    -- 将 <cn_address> 替换为 CN 节点的 IP 地址(priority_networks)或 FQDN,
    -- 并将 <heartbeat_service_port>(默认:9050)替换为您在 cn.conf 中指定的 heartbeat_service_port。
    ALTER SYSTEM ADD COMPUTE NODE "<cn_address>:<heartbeat_service_port>", "<cn2_address>:<heartbeat_service_port>", "<cn3_address>:<heartbeat_service_port>";

    说明

    您可以通过一条 SQL 添加多个 CN 节点。每对 <cn_address>:<heartbeat_service_port> 代表一个 CN 节点。

  4. 执行以下 SQL 查看 BE/CN 节点状态。

    • 查看 BE 节点状态。

    SHOW PROC '/backends'\G

    示例:

    MySQL [(none)]> SHOW PROC '/backends'\G
    *************************** 1. row ***************************
                BackendId: 10007
                       IP: 172.26.195.67
            HeartbeatPort: 9050
                   BePort: 9060
                 HttpPort: 8040
                 BrpcPort: 8060
            LastStartTime: 2023-06-15 15:23:08
            LastHeartbeat: 2023-06-15 15:57:30
                    Alive: true
     SystemDecommissioned: false
    ClusterDecommissioned: false
                TabletNum: 30
         DataUsedCapacity: 0.000 
            AvailCapacity: 341.965 GB
            TotalCapacity: 1.968 TB
                  UsedPct: 83.04 %
           MaxDiskUsedPct: 83.04 %
                   ErrMsg: 
                  Version: 3.0.0-48f4d81
                   Status: {"lastSuccessReportTabletsTime":"2023-06-15 15:57:08"}
        DataTotalCapacity: 341.965 GB
              DataUsedPct: 0.00 %
                 CpuCores: 16
        NumRunningQueries: 0
               MemUsedPct: 0.01 %
               CpuUsedPct: 0.0 %

    如果字段 Alivetrue,说明该 BE 节点正常启动并加入集群。

    • 查看 CN 节点状态。

    SHOW PROC '/compute_nodes'\G

    示例:

    MySQL [(none)]> SHOW PROC '/compute_nodes'\G
    *************************** 1. row ***************************
            ComputeNodeId: 10003
                       IP: x.x.x.x
            HeartbeatPort: 9050
                   BePort: 9060
                 HttpPort: 8040
                 BrpcPort: 8060
            LastStartTime: 2023-03-13 15:11:13
            LastHeartbeat: 2023-03-13 15:11:13
                    Alive: true
     SystemDecommissioned: false
    ClusterDecommissioned: false
                   ErrMsg: 
                  Version: 2.5.2-c3772fb
    1 row in set (0.00 sec)

    如果字段 Alivetrue,说明该 CN 节点正常启动并加入集群。

    如果执行查询时需要使用 CN 节点扩展算力,则需要设置系统变量 SET prefer_compute_node = true;SET use_compute_nodes = -1;。系统变量的更多信息,请参见系统变量

五、停止StarRocks集群

您可以通过在相应实例上运行以下命令来停止 StarRocks 集群。

  • 停止 FE 节点。

    ./fe/bin/stop_fe.sh

  • 停止 BE 节点。

    ./be/bin/stop_be.sh

  • 停止 CN 节点。

    ./be/bin/stop_cn.sh

六、故障排除

如果启动 FE、BE 或 CN 节点失败,尝试以下步骤来发现问题:

  • 如果 FE 节点没有正常启动,您可以通过查看 fe/log/fe.warn.log 中的日志来确定问题所在。

    cat fe/log/fe.warn.log

    确定并解决问题后,您首先需要终止当前 FE 进程,删除现有的 meta 路径,新建元数据存储路径,然后以正确的配置重启该 FE 节点。

  • 如果 BE 节点没有正常启动,您可以通过查看 be/log/be.WARNING 中的日志来确定问题所在。

    cat be/log/be.WARNING

    确定并解决问题后,您首先需要终止当前 BE 进程,删除现有的 storage 路径,新建数据存储路径,然后以正确的配置重启该 BE 节点。

  • 如果 CN 节点没有正常启动,您可以通过查看 be/log/cn.WARNING 中的日志来确定问题所在。

    cat be/log/cn.WARNING

    确定并解决问题后,您首先需要终止当前 CN 进程,然后以正确的配置重启该 CN 节点。

七、设置用户密码

ALTER USER jack@'172.10.1.10' IDENTIFIED BY '54321';


成功是一时的,但失败和平凡是我们生命的主旋律,我们在平凡的路上,一直和你们相伴!

故梦丶

intp 逻辑家

站长

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

目录

欢迎来到故梦丶的站点,为您导航全站动态

33 文章数
3 分类数
3 评论数
8标签数
最近评论
测试人

测试人


不错

故梦丶

故梦丶


1111

热门文章