StarRocks简介及安装

目录

1.简介

2.系统架构

3.安装

1.下载并解压

2.配置FE节点

3.启动 FE 节点

4.添加FE节点

5.配置BE节点

6.添加BE节点

7.启动BE节点


1.简介

StarRocks 是一款高性能分析型数据仓库,既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数据。StarRocks 兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。

2.系统架构

StarRocks核心只有 FE(Frontend)、BE(Backend)。FE 和 BE 模块都可以在线水平扩展,元数据和业务数据都有副本机制,确保整个系统无单点。StarRocks 使用列式存储,采用分区分桶机制进行数据管理。目前都是通过mysql客户端查询StarRocks中的数据。系统架构图如下

FE 是 StarRocks 的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。

BE 是 StarRocks 的后端节点,负责数据存储、SQL执行等工作。

3.安装

1.下载并解压

wget https://download.starrocks.com/zh-CN/download/request-download/55/StarRocks-2.3.3.tar.gz

2.配置FE节点

进入 StarRocks-x.x.x/fe 路径,修改FE配置文件conf/fe.conf

添加元数据目录配置项。

meta_dir = ${STARROCKS_HOME}/meta

添加 Java 目录配置项。

JAVA_HOME = ${JAVA_HOME}

在StarRocks-x.x.x/fe目录下面,创建元数据路径

mkdir -p meta

3.启动 FE 节点

./bin/start_fe.sh --daemon
./bin/stop_fe.sh --daemon

通过查看日志log/fe.log和JPS命令查询java进程确认是否启动成功。

启动成功则可以在浏览器访问WEB UI ip:http_port(默认 http_port 为 8030),用户名为 root,密码为空。

4.添加FE节点

可通过 MySQL 客户端连接 StarRocks 以添加 FE 节点。

在 FE 进程启动后,使用 MySQL 客户端连接 FE 实例。

mysql -h 127.0.0.1 -P9030 -uroot

说明 root 为 StarRocks 默认内置 user,密码为空,端口为 fe/conf/fe.conf 中的 query_port 配置项,默认值为 9030。

查看 FE 状态。

SHOW PROC '/frontends'\G

5.配置BE节点

进入StarRocks-x.x.x/be目录,创建 BE 节点中的数据路径 storage。

mkdir -p storage

6.添加BE节点

通过 MySQL 客户端将 BE 节点添加至 StarRocks 集群。

//添加节点
ALTER SYSTEM ADD BACKEND "host:port";//host 需要与 priority_networks 相匹配,port 需要与 be.conf 文件中的设置的 heartbeat_service_port 相同,默认为 9050。
//删除节点
ALTER SYSTEM decommission BACKEND "host:port";

7.启动BE节点

./bin/start_be.sh --daemon
./bin/stop_be.sh --daemon

确认BE启动是否成功,在通过mysql客户端执行命令

SHOW PROC '/backends'\G

4.使用

1.常用命令

#进入某个catalog
set catalog xx_catalog;
#使用某个库
use databases;
#查看某个表的数据
#已经指定catalog和database之后可以直接查询
select * from table limit 3
#如果没有指定catalog
select * from xx_catalog.xx_database.xx_table limit 3


//查看表信息及存储介质等 表可以存储在机械磁盘也可以存储在ssd固态硬盘加速
show partitions from table
//查询某个分区数据
select * from table partition (p1);
//新增分区
ALTER TABLE tbl_name
ADD PARTITION p20240513
VALUES [("2024-05-13"), ("2024-05-14"))
//删除分区
ALTER TABLE [<db_name>.]<tbl_name>
DROP PARTITION [IF EXISTS] <partition_name>

2.权限管理

例子参考:GRANT | StarRocks

//给表授予权限
GRANT ALL ON 库.表 TO user '用户'@'%';

3.表设计

1.分区和分桶

建表时,通过设置合理的分区和分桶,使数据均衡分布在不同节点上,查询时能够有效裁剪数据扫描量,最大限度的利用集群的并发性能,从而提升查询性能。

StarRocks支持两层的数据划分。第一层是Partition分区,支持Range、List或者不分区(不分区代表全表只有一个分区)。第二层是 Bucket分桶(Tablet)

表,分区,分桶以及副本的关系

Table (逻辑描述) -- > Partition(分区:管理单元) --> Bucket(分桶:每个分桶就是一个数据分片:Tablet,数据划分的最小逻辑单元)

分区是逻辑概念,分桶是物理概念。每个分区partition内部会按照分桶键,采用哈希分桶算法将数据划分为多个桶bucket,每个桶的数据称之为一个数据分片tablet(实际的物理存储单元)。根据建表设置的副本数,计算有多少个副本在其他节点上(负载均衡)

4.建表

1.创建分区表

#创建分区表--动态分区
#dynamic_partition.start=-2147483648表示不删除历史分区
CREATE TABLE site_access(
event_day DATE,
site_id INT DEFAULT '10',
city_code VARCHAR(100),
user_name VARCHAR(32) DEFAULT '',
pv BIGINT DEFAULT '0'
)
DUPLICATE KEY(event_day, site_id, city_code, user_name)
PARTITION BY RANGE(event_day)(
PARTITION p20200321 VALUES LESS THAN ("2020-03-22"),
PARTITION p20200322 VALUES LESS THAN ("2020-03-23"),
PARTITION p20200323 VALUES LESS THAN ("2020-03-24"),
PARTITION p20200324 VALUES LESS THAN ("2020-03-25")
)
DISTRIBUTED BY HASH(event_day, site_id) BUCKETS 32
PROPERTIES(
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.start" = "-3",
    "dynamic_partition.end" = "3",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "32",
    "dynamic_partition.history_partition_num" = "0"
);
#查看表当前的分区情况
SHOW PARTITIONS FROM site_access
#修改动态分区的属性
ALTER TABLE site_access SET("dynamic_partition.enable"="false");

5.数据同步

1.hive同步到starrocks(同步方式)

1.创建hive_catalog

参考:概述 | StarRocks

#因使用的是dlf数据源,所以创建方式稍微有点不一样
CREATE EXTERNAL CATALOG hive_catalog
properties
(
    "type" = "hive",
    "hive.metastore.type" = "DLF"
);

2.创建hive临时表

 有些是复杂的查询,所以增加这步骤,充分利用hive,spark等计算引擎资源

create table as select * from xx_table

3.从hive临时表导入数据到starrocks

insert into xx_database.xx_table(xx_cols) select * from hive_catalog.xx_database.xx_table 

2.mysql同步到starrocks(同步方式)

1.创建mysql_catalog

CREATE EXTERNAL CATALOG xx_catalog
PROPERTIES
(
    "type"="jdbc",
    "user"="xx",
    "password"="xx",
    "jdbc_uri"="jdbc:mysql://ip:port",
    "driver_url"="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar",
    "driver_class"="com.mysql.cj.jdbc.Driver"
);

2.从mysql导入数据到starrocks

insert into xx_database.xx_table(xx_cols) select * from xx_catalog.xx_database.xx_table 

6.扩缩容

1.扩容

查看be节点信息

show backends;

添加be节点

#be_ip:在节点管理页面找到刚扩容的节点,使用对应内网IP地址。
#be_heartbeat_service_port:和show backends;其他BE节点保持一致。
ALTER SYSTEM ADD backend 'be_ip:heartbeat_service_port';

2.缩容

下线be节点

ALTER SYSTEM DECOMMISSION backend "be_ip:be_heartbeat_service_port";

如果Decommission很慢,您可以使用DROP方式强制下线BE

ALTER SYSTEM DROP backend "be_ip:be_heartbeat_service_port";

查看节点是否下线成功

show backends;

释放节点

去控制台释放已经下线的节点

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值