StarRocks~单机部署和使用示例(单机部署建表报错: Table replication num should be less than or equal to the number of available BE nodes)

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

一、部署节点

主机IP

主机名

内存

192.168.80.134

hadoop101

>=8GB

 

二、部署规划

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

服务名称

部署目录

日志目录

数据目录

FE

/opt/module/StarRocks/fe

/opt/module/StarRocks/fe/log

/opt/module/StarRocks/fe/meta

BE

/opt/module/StarRocks/be

/opt/module/StarRocks/be/log

/opt/module/StarRocks/be/storage

Broker

/opt/module/StarRocks/apache_hdfs_broker

/opt/module/StarRocks/apache_hdfs_broker/log

mysql-client

/opt/module/mysql

/opt/module/mysql/log

 mysql-client的安装步骤,请参考mysql的安装,这里省略。

 

、部署服务

1)安装之前先使用命令检查CPU是否支持,有信息输出则支持,没信息输出则不支持建议更换机器

[root@hadoop101 software]# cat /proc/cpuinfo |grep avx2

 

2)下载tar,并重命名(省略)

 

3)解压tar并重命名

[root@hadoop101 software]# tar -zxvf StarRocks-1.19.1.tar.gz -C /opt/module/

[root@hadoop101 software]# mv /opt/module/StarRocks-1.19.1  /opt/module/StarRocks

 

4)创建元数据目录

[root@hadoop101 software]# cd /opt/module/StarRocks/fe

[root@hadoop101 fe]# mkdir -p meta

 

5)启动hadoop101 FE节点

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

 

(6)查看FE服务是否启动成功

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

[root@hadoop101 fe]# jps | grep StarRocksFe

5164 StarRocksFe

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

 

7)启动MySQL客户端,访问FE,查看FE状况

[root@hadoop101 fe]# mysql -h hadoop101 -uroot -P9030

mysql> SHOW PROC '/frontends'\G

 

8)部署BE,创建BE的数据目录

[root@hadoop101 module]# cd  StarRocks/be/

[root@hadoop101 be]# mkdir -p storage

 

10)使用MySQL客户端添加hadoop101对应be节点

mysql> ALTER SYSTEM ADD BACKEND "hadoop101:9050";

 

11)添加完毕后,启动hadoop101 BE节点

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

 

12)查看BE服务是否启动成功

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

[root@hadoop101 be]# 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中。

 

13)查看BE状况,也是同样alivetrue是正常运行

mysql> SHOW PROC '/backends'\G

 

14)部署Broker,此角色主要用于后续Broker load使用,启动安装目录的Broker服务

[root@hadoop101 StarRocks-1.19.1]# cd  apache_hdfs_broker/

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

 

15)使用MySQL客户端添加对应节点

mysql> ALTER SYSTEM ADD BROKER broker1 "hadoop101:8000";

 

16)使用broker是否启动成功

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

[root@hadoop101 apache_hdfs_broker]# jps | grep BrokerBootstrap

7594  BrokerBootstrap

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

 

17)查看状态

mysql> SHOW PROC "/brokers"\G

 

使用示例

1)修改root用户密码

例如修改root密码也为root

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

 

(2)新建数据库

mysql> create database test;
Query OK, 0 rows affected (0.01 sec)

mysql> use  test;
Database changed

 

(3)新建表(明细模型)

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

CREATE TABLE IF NOT EXISTS detail (
    event_time DATETIME NOT NULL COMMENT "datetime of event",
    event_type INT NOT NULL COMMENT "type of event",
    user_id INT COMMENT "id of user",
    device_code INT COMMENT "code of device",
    channel INT COMMENT ""
)
DUPLICATE KEY(event_time, event_type)
DISTRIBUTED BY HASH(user_id) BUCKETS 8
PROPERTIES ("replication_num"="1");

Query OK, 0 rows affected (0.05 sec)

注意:如果不指定数据为单副本,执行会报错:ERROR 1064 (HY000): Table replication num should be less than or equal to the number of available BE nodes. You can change this default by setting the replication_num table properties. Current alive backend is [10002]. , table=detail, replication_num=3, default_replication_num=3

 

StarRocks根据摄入数据和实际存储数据之间的映射关系,分为明细模型(Duplicate key)、聚合模型(Aggregate key)、更新模型(Unique key)和主键模型(Primary key)。

StarRocks建表默认采用明细模型,排序列使用稀疏索引,可以快速过滤数据。明细模型用于保存所有历史数据,并且用户可以考虑将过滤条件中频繁使用的维度列作为排序键,比如用户经常需要查看某一时间,可以将事件时间和事件类型作为排序键。

 

(4)插入数据

INSERT INTO detail VALUES('2021-11-18 12:00:00.00',1,1001,1,1);
INSERT INTO detail VALUES('2021-11-17 12:00:00.00',2,1001,1,1);
INSERT INTO detail VALUES('2021-11-16 12:00:00.00',3,1001,1,1);
INSERT INTO detail VALUES('2021-11-15 12:00:00.00',1,1001,1,1);
INSERT INTO detail VALUES('2021-11-14 12:00:00.00',2,1001,1,1);

 

(5)查询数据,5条明细数据都在。此种模型的表用来存储所有历史明细数据。

SELECT * FROM detail;

 

posted @ 2024-12-06 14:27  业余砖家  阅读(1616)  评论(1)    收藏  举报