严格来说,StarRocks并没有所谓的“Standalone运行模式”,生产环境下更是不建议进行单实例部署。这里将单机部署整理出来,主要是考虑当用户测试环境受限于机器数量或仅希望验证功能,那么也可以在一台机器上简易部署把StarRocks跑起来。

以服务器“starrocks(192.168.110.98)”为例,在进行完“第1.2章:StarRocks部署--部署环境准备”中的准备工作后,我们开始进行单节点的部署。

为方便演示,我们使用root用户通过XShell工具访问服务器,单节点架构设计如下:

机器节点

192.168.116.98 (starrocks)

部署服务

1 FE(Leader)

1 BE

1 Broker

mysql-client

部署目录及数据目录设计如下,后续的部署操作严格按照部署设计进行:

FE

部署目录:/opt/module/starrocks/fe

日志目录:/opt/module/starrocks/fe/log(默认)

元数据目录:/opt/meta

BE

部署目录:/opt/module/starrocks/be

日志目录:/opt/module/starrocks/be/log(默认)

数据目录:/opt/storage

Broker

部署目录:/opt/module/starrocks/apache_hdfs_broker

获取二进制产品包

StarRocks的二进制部署包可在官网下载获取:

StarRocks - 新一代极速全场景MPP数据库https://www.starrocks.com/zh-CN/download/community

下面我们以StarRocks-1.19.2.tar.gz为例,将下载好的部署包上传至/opt/software目录下:

[root@starrocks ~]# mkdir /opt/software

[root@starrocks ~]# cd /opt/software/

[root@starrocks software]# ll

total 988752

-rw-r--r-- 1 root root 1012479814 Nov 22 15:46 StarRocks-1.19.2.tar.gz

解压产品包

[root@starrocks software]# tar xvf StarRocks-1.19.2.tar.gz

[root@starrocks software]# ll

total 988752

drwxrwxr-x 6 1007 1007        100 Nov 20 20:29 StarRocks-1.19.2

-rw-r--r-- 1 root root 1012479814 Nov 22 15:46 StarRocks-1.19.2.tar.gz

StarRocks二进制包解压后目录结构及简要说明见附录一:StarRocks部署包目录树。

分发部署文件

[root@starrocks software]# mv /opt/software/StarRocks-1.19.2 /opt/software/starrocks[重命名]

[root@starrocks software]# mv /opt/software/starrocks /opt/module/

[root@starrocks software]# cd /opt/module/starrocks/

[root@starrocks starrocks]# ll

total 0

drwxr-xr-x. 5 1021 1021 40 Nov 22 14:40 apache_hdfs_broker

drwxr-xr-x. 6 1021 1021 51 Nov 22 14:40 be

drwxr-xr-x. 8 1021 1021 83 Nov 22 14:52 fe

drwxr-xr-x. 4 1021 1021 32 Nov 22 14:40 udf

部署FE实例

4.1 修改FE配置文件

StarRocks各服务配置文件的默认配置已经足以启动集群,不建议初尝用户修改较多配置。FE的配置文件在测试环境中我们通常只需要关注以下三点:

a、注意默认端口,避免端口冲突,正常情况下不需要修改;

b、绑定IP,避免多网卡情况下服务无法自动匹配到正确的IP。特别注意,绑定ip时,如果不清楚CIDR表示法,可以直接填写完整的ip(不支持别名),例如配置为priority_networks = 192.168.110.98,这样的写法等同于priority_networks = 192.168.110.98/32

c、设置元数据目录,默认目录为fe/meta,我们建议新建目录并修改配置文件。

根据部署设计,创建元数据存储目录:

[root@starrocks starrocks]# mkdir /opt/meta

针对b和c修改配置文件(带#的为注释,红色字体为新增配置):

[root@starrocks starrocks]# vi /opt/module/starrocks/fe/conf/fe.conf

# store metadata, create it if it is not exist.

# Default value is ${STARROCKS_HOME}/meta

# meta_dir = ${STARROCKS_HOME}/meta

meta_dir = /opt/meta

…………

# Choose one if there are more than one ip except loopback address.

# Note that there should at most one ip match this list.

# If no ip match this rule, will choose one randomly.

# use CIDR format, e.g. 10.10.10.0/24

# Default value is empty.

# priority_networks = 10.10.10.0/24;192.168.0.0/16

priority_networks = 192.168.110.98

修改完成后保存配置。

4.2 启动FE

[root@starrocks starrocks]# cd /opt/module/starrocks/fe/bin/

[root@starrocks bin]# ll

total 16

-rwxrwxr-x. 1 1021 1021 1347 Nov 22 14:40 common.sh

-rwxrwxr-x. 1 1021 1021 1411 Nov 22 14:40 show_fe_version.sh

-rwxrwxr-x. 1 1021 1021 3122 Nov 22 14:40 start_fe.sh

-rwxrwxr-x. 1 1021 1021 1749 Nov 22 14:40 stop_fe.sh

[root@starrocks bin]# ./start_fe.sh --daemon

[补充:关闭FE的脚本是stop_fe.sh,命令:./stop_fe.sh]

FE使用Java语言编写,使用jps命令查看java进程,若发现有StarRocksFe进程,即为启动成功:

[root@starrocks bin]# jps

5178 Jps

5164 StarRocksFe

如果进程状态异常可在FE日志目录中查看日志追踪原因,FE的主要日志在fe.log中,所有查询的审计日志在fe.audit.log中。由于是初次启动,如果在操作过程中遇到比较耗时的问题,可以清空FE的元数据目录,再从头开始操作

4.3 访问FE

使用mysql-client访问FE,FE查询端口默认为9030,自带用户root,默认密码为空:

[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.1.0

………………

mysql>

4.4 确认FE状态

若mysql-client能够正常访问FE,已说明FE状态正常,查询命令:

mysql> show frontends\G

*************************** 1. row ***************************

             Name: 192.168.110.98_9010_1631099997319

               IP: 192.168.110.98

      EditLogPort: 9010

         HttpPort: 8030

        QueryPort: 9030

          RpcPort: 9020

             Role: FOLLOWER

         IsMaster: true

        ClusterId: 417341735

             Join: true

            Alive: true

ReplayedJournalId: 74

    LastHeartbeat: 2021-11-25 19:24:04

         IsHelper: true

           ErrMsg:

1 row in set (0.09 sec)

Alive为true即说明FE节点状态正常。

4.5 添加实例进入集群

我们先将添加BE与Broker实例添加入集群。这里需要说明一下,“启动服务”和“将服务添加入集群”并没有严格的先后顺序,但若先启动服务,在实例未加入集群前,BE的日志中会打印一些提示未加入集群的WARNING信息,例如:Fail to get master client from cache。所以我们可以在FE全部部署完成后,使用mysql-client将集群中其他实例通过SQL添加入集群,然后再逐个部署启动。

添加BE进入集群,端口使用BE的heartbeat_service_port(默认为9050):

mysql> alter system add backend '192.168.110.98:9050';

Query OK, 0 rows affected (0.10 sec)

添加Broker进入集群时需要给Broker设定名称,比如命名为hdfs_broker,端口使用Broker的broker_ipc_port(默认为8000):

mysql> alter system add broker hdfs_broker '192.168.110.98:8000';

Query OK, 0 rows affected (0.03 sec)

若添加实例进入集群时信息输入有误或出现其他异常,我们可以将其删除后重新添加,删除示例:

从集群中删除BE(当前仅有一个BE实例,故删除时可以直接使用dropp命令删除。删除BE为高风险操作,所以这里的删除命令设计为了dropp):

mysql> alter system dropp backend '192.168.110.98:9050';

Query OK, 0 rows affected (0.09 sec)

从集群中删除Broker:

mysql> alter system drop broker hdfs_broker '192.168.110.98:8000';

Query OK, 0 rows affected (0.04 sec)

暂时退出StarRocks:

mysql> exit

Bye

部署BE实例

5.1 修改BE配置文件

BE的配置文件,在测试环境通常也是关注如下三点:

a、注意默认端口,避免端口冲突,正常情况下不需要修改;

b、绑定IP,避免多网卡情况下无法自动找到正确的IP(同样,不清楚CIDR就可以直接填写完整的IP);

c、设置数据存储目录,默认目录为be/storage,我们建议新建目录并修改配置文件。

新建BE数据存储目录:

[root@starrocks bin]# mkdir /opt/storage

针对b和c修改配置文件(带#的为注释,红色字体为新增配置):

[root@starrocks bin]# vi /opt/module/starrocks/be/conf/be.conf

# Choose one if there are more than one ip except loopback address.

# Note that there should at most one ip match this list.

# If no ip match this rule, will choose one randomly.

# use CIDR format, e.g. 10.10.10.0/24

# Default value is empty.

# priority_networks = 10.10.10.0/24;192.168.0.0/16

priority_networks = 192.168.110.98

…………

# you also can specify the properties by setting '<property>:<value>', seperate by ','

# property 'medium' has a higher priority than the extension of path

#

# Default value is ${STARROCKS_HOME}/storage, you should create it by hand.

# storage_root_path = ${STARROCKS_HOME}/storage

storage_root_path = /opt/storage

修改完成后保存配置。

5.2 启动BE

[root@starrocks bin]# cd /opt/module/starrocks/be/bin/

[root@starrocks bin]# ll

total 16

-rwxrwxr-x. 1 1021 1021 1347 Nov 22 14:40 common.sh

-rwxrwxr-x. 1 1021 1021  644 Nov 22 14:40 show_be_version.sh

-rwxrwxr-x. 1 1021 1021 3377 Nov 22 14:40 start_be.sh

-rwxrwxr-x. 1 1021 1021 1601 Nov 22 14:40 stop_be.sh

[root@starrocks bin]# ./start_be.sh --daemon

[补充:关闭BE脚本为stop_be.sh,命令:./stop_be.sh]

BE使用C++编写,使用ps命令查看进程,若发现有starrocks_be进程,即为启动成功:

[root@starrocks bin]# ps -ef | grep starrocks_be

root       6670      1  1 19:46 pts/0    00:00:00 /opt/module/starrocks/be/lib/starrocks_be

如果进程状态异常可在BE日志目录中查看日志追踪原因,BE的主要日志在be.INFO中,其他的日志在be.out中。

5.3 查看BE状态

仍使用mysql-client访问集群:

[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot

Welcome to the MySQL monitor.  Commands end with ; or \g.

………………

mysql>

查询BE状态:

mysql> show backends\G

*************************** 1. row ***************************

            BackendId: 10003

              Cluster: default_cluster

                   IP: 192.168.110.98

        HeartbeatPort: 9050

               BePort: 9060

             HttpPort: 8040

             BrpcPort: 8060

        LastStartTime: 2021-11-25 19:46:17

        LastHeartbeat: 2021-11-25 19:51:32

                Alive: true

 SystemDecommissioned: false

ClusterDecommissioned: false

            TabletNum: 10

     DataUsedCapacity: .000

        AvailCapacity: 28.404 GB

        TotalCapacity: 37.017 GB

              UsedPct: 23.27 %

       MaxDiskUsedPct: 23.27 %

               ErrMsg:

              Version: 1.19.2-b04a782

               Status: {"lastSuccessReportTabletsTime":"2021-11-25 19:51:17"}

1 row in set (0.10 sec)

一般Alive为true即为状态正常,若为false,可根据日志排查问题。同样的,因为当前BE为初次启动,如果出现无法快速定位的问题,可以清空storage数据目录,重新启动服务

退出StarRocks:

mysql> exit

Bye

部署Broker

在部署完FE与BE后,StarRocks主要服务已经部署完成。Broker是StarRocks与外部HDFS/对象存储等外部数据对接的中转服务,若不需要可以不部署。Broker本身是无状态的进程,可以随意启停,不影响集群。

6.1 修改Broker配置文件

Broker的配置文件通常不需要修改。与FE实例和BE实例不同,Broker当前没有也不需要priority_networks这个选项。Broker的服务默认绑定在0.0.0.0上,我们只需在前面4.5节 ADD BROKER时,输入正确可访问的BROKER IP即可。

6.2 启动Broker

[root@starrocks bin]# cd /opt/module/starrocks/apache_hdfs_broker/bin/

[root@starrocks bin]# ll

total 8

-rwxrwxr-x. 1 1021 1021 2616 Sep  7 14:40 start_broker.sh

-rwxrwxr-x. 1 1021 1021 1602 Sep  7 14:40 stop_broker.sh

[root@starrocks bin]# ./start_broker.sh --daemon

[补充:关闭Broker脚本为stop_broker.sh,命令:./stop_broker.sh]

查看java进程,若发现有BrokerBootstrap即为启动成功:

[root@starrocks bin]# jps | grep BrokerBootstrap

7594 BrokerBootstrap

Broker日志在apache_hdfs_broker.log中,如果进程状态异常可查看日志追踪原因。

6.3 查看Broker状态

使用mysql-client访问集群:

[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.1.0 StarRocks version 1.18.2

……………………

mysql>

查看Broker状态:

mysql> show broker\G

*************************** 1. row ***************************

          Name: hdfs_broker

            IP: 192.168.110.98

          Port: 8000

         Alive: true

 LastStartTime: 2021-11-25 20:19:56

LastUpdateTime: 2021-11-25 20:21:31

        ErrMsg:

1 row in set (0.01 sec)

Alive为true即为状态正常,如果状态异常可以根据日志定位问题。

简单使用示例

7.1 修改root用户密码

例如修改root密码也为root:

mysql> set password=password('root');

Query OK, 0 rows affected (0.02 sec)

7.2 建库建表

StarRocks的副本数是不能大于BE节点数的,由于当前仅有一个BE节点,我们建表时务必注意指定数据为单副本,示例如下:

新建一个starrocks数据库:

mysql> create database starrocks;

Query OK, 0 rows affected (0.01 sec)

mysql> use starrocks;

Database changed

新建一个customer表,无分区,按c_custkey分桶,指定数据存储为1副本:

mysql>CREATE TABLE customer (

    c_custkey INT,

    c_name VARCHAR(26),

c_city VARCHAR(11)

)

DUPLICATE KEY(c_custkey)

DISTRIBUTED BY HASH (c_custkey) BUCKETS 10

PROPERTIES (

  "replication_num"="1");

Query OK, 0 rows affected (0.05 sec)

7.3 插入测试数据

mysql> insert into customer values(1,"Jack","Beijing"),(2,"Loong","Xian"),(3,"Bob","London");

Query OK, 3 rows affected (0.07 sec)

{'label':'insert_7ddb8f57-10a2-11ec-bcd0-525400d116d1', 'status':'VISIBLE', 'txnId':'3'}

7.4 简单查询

mysql> select count(1) from customer;

+----------------+

|  count(1)      |

+----------------+

|        3           |

+----------------+

使用图形化工具

StarRocks兼容MySQL协议,在使用图形化工具连接时,我们可将其视为MySQL直接连接。以SQLyog为例,输入服务器IP、用户名、密码和端口(查询端口默认为9030),即可连接:

9 Docker部署

若单台服务器内存、磁盘等资源充足,也可以使用Docker在单服务器节点上对FE/BE进行多实例的部署,但考虑到资源竞争问题,依旧不推荐在生产环境中使用。

除在Docker容器中跑StarRocks外,我们可以考虑使用Docker将完成第1.2章部署准备工作后的某个容器保存为镜像,在后续集群扩容时快速拉取使用。

容器化部署及使用这里先不展开描述,后续其他文档会详述基于Docker的单节点StarRocks一键部署。

附录一:StarRocks部署包目录树[部分]

StarRocks-1.19.2

├── apache_hdfs_broker  # Broker目录

│   ├── bin

│   │   ├── start_broker.sh  # Broker启动脚本

│   │   └── stop_broker.sh  # Broker关闭脚本

│   ├── conf

│   │   ├── apache_hdfs_broker.conf  # Broker配置文件

│   │   ├── hdfs-site.xml

│   │   └── log4j.properties

│   └── lib

│       └── *.jar  # Broker依赖的jar包

├── be  # BE实例目录

│   ├── bin

│   │   ├── common.sh

│   │   ├── show_be_version.sh  # BE版本查看

│   │   ├── start_be.sh  # BE启动脚本

│   │   └── stop_be.sh  # BE关闭脚本

│   ├── conf

│   │   ├── be.conf  # BE配置文件

│   │   └── hadoop_env.sh

│   ├── lib

│   │   ├── meta_tool  # Tablet元数据离线管理工具 [1.19版本已合并入starrocks_be]

│   │   └── starrocks_be  # BE可执行文件(小版本升级时替换即可)

│   └── www  # BE Web页面文件

├── fe  # FE实例目录

│   ├── bin

│   │   ├── common.sh

│   │   ├── show_fe_version.sh  # FE版本查看

│   │   ├── start_fe.sh  # FE启动脚本

│   │   └── stop_fe.sh  # FE关闭脚本

│   ├── conf

│   │   ├── fe.conf  # FE配置文件

│   │   └── hadoop_env.sh

│   ├── lib

│   │   ├── starrocks-fe.jar  # FE jar包(小版本升级时替换即可)

│   │   └── *.jar  # FE依赖的jar包

│   ├── log

│   │   └── *.log

│   └── webroot # FE Web页面文件

└── udf # 用户自定义函数目录 [重构中,目前不建议使用]

    ├── include

    │   ├── uda_test_harness.h

    │   └── udf.h  # UDF框架头文件

    └── lib

        └── libStarRocksUdf.a  # UDF框架静态库文件

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐