• 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 节点

    1. ./bin/start_fe.sh --daemon
    2. ./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 集群。

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

    7.启动BE节点

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

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

    SHOW PROC '/backends'\G
    

    4.使用

    1.常用命令

    1. #进入某个catalog
    2. set catalog xx_catalog;
    3. #使用某个库
    4. use databases;
    5. #查看某个表的数据
    6. #已经指定catalog和database之后可以直接查询
    7. select * from table limit 3
    8. #如果没有指定catalog
    9. select * from xx_catalog.xx_database.xx_table limit 3
    10. //查看表信息及存储介质等 表可以存储在机械磁盘也可以存储在ssd固态硬盘加速
    11. show partitions from table
    12. //查询某个分区数据
    13. select * from table partition (p1);
    14. //新增分区
    15. ALTER TABLE tbl_name
    16. ADD PARTITION p20240513
    17. VALUES [("2024-05-13"), ("2024-05-14"))
    18. //删除分区
    19. ALTER TABLE [<db_name>.]<tbl_name>
    20. DROP PARTITION [IF EXISTS] <partition_name>

    2.权限管理

    例子参考:GRANT | StarRocks

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

    3.表设计

    1.分区和分桶

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

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

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

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

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

    4.建表

    1.创建分区表

    1. #创建分区表--动态分区
    2. #dynamic_partition.start=-2147483648表示不删除历史分区
    3. CREATE TABLE site_access(
    4. event_day DATE,
    5. site_id INT DEFAULT '10',
    6. city_code VARCHAR(100),
    7. user_name VARCHAR(32) DEFAULT '',
    8. pv BIGINT DEFAULT '0'
    9. )
    10. DUPLICATE KEY(event_day, site_id, city_code, user_name)
    11. PARTITION BY RANGE(event_day)(
    12. PARTITION p20200321 VALUES LESS THAN ("2020-03-22"),
    13. PARTITION p20200322 VALUES LESS THAN ("2020-03-23"),
    14. PARTITION p20200323 VALUES LESS THAN ("2020-03-24"),
    15. PARTITION p20200324 VALUES LESS THAN ("2020-03-25")
    16. )
    17. DISTRIBUTED BY HASH(event_day, site_id) BUCKETS 32
    18. PROPERTIES(
    19. "dynamic_partition.enable" = "true",
    20. "dynamic_partition.time_unit" = "DAY",
    21. "dynamic_partition.start" = "-3",
    22. "dynamic_partition.end" = "3",
    23. "dynamic_partition.prefix" = "p",
    24. "dynamic_partition.buckets" = "32",
    25. "dynamic_partition.history_partition_num" = "0"
    26. );
    27. #查看表当前的分区情况
    28. SHOW PARTITIONS FROM site_access
    29. #修改动态分区的属性
    30. ALTER TABLE site_access SET("dynamic_partition.enable"="false");

    5.数据同步

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

    1.创建hive_catalog

    参考:概述 | StarRocks

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

    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

    1. CREATE EXTERNAL CATALOG xx_catalog
    2. PROPERTIES
    3. (
    4. "type"="jdbc",
    5. "user"="xx",
    6. "password"="xx",
    7. "jdbc_uri"="jdbc:mysql://ip:port",
    8. "driver_url"="https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar",
    9. "driver_class"="com.mysql.cj.jdbc.Driver"
    10. );

    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节点

    1. #be_ip:在节点管理页面找到刚扩容的节点,使用对应内网IP地址。
    2. #be_heartbeat_service_port:和show backends;其他BE节点保持一致。
    3. 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;

    释放节点

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

  • 相关阅读:
    如何选择功放芯片?音质好的功放芯片性能详解
    怎样使用kornia库中的LoFTR(Image matching example with LoFTR)
    java:CompletableFuture的简单例子
    相敏检波电路
    我的有趣的英语学习经历
    四叉堆在GO中的应用-定时任务timer
    基于Dango+微信小程序的广西东盟旅游资源信息管理系统+80003(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案
    开源项目DevStream v0.1.0 发布,打造灵活的 DevOps 工具链
    音频基础 DAI:Digital Audio Interfaces
    【C++】内联函数 ④ ( C++ 编译优化 - 没有 inline 关键字修饰的函数也可能被内联 | C++ 编译器内联限制 | 内联失败的几种情况 )
  • 原文地址:https://blog.csdn.net/q495673918/article/details/127618782