当前位置: 首页 > news >正文

StarRocks 安装部署

StarRocks 安装部署

StarRocks端口:

官方《配置检查》有服务端口详细描述:
https://docs.starrocks.io/zh/docs/deployment/environment_configurations/


StarRocks架构:https://docs.starrocks.io/zh/docs/introduction/Architecture/
StarRocks存算一体架构部署模式:FE + BE 节点
StarRocks存算分离架构部署模式:FE + CN(BE被CN取代)

StarRocks节点/角色:
FE:
FE Frontend 简称 FE,是 StarRocks 的前端节点,负责元数据管理、客户端连接管理、查询规划和查询调度。每个 FE 在其内存中存储和维护一份完整的元数据副本,保证 FE 之间服务的一致性。
FE 分为 Leader FE 节点、Follower 节点和 Observer 节点。Follower 节点可以根据类似 Paxos 的 BDB JE(Berkeley DB Java Edition)协议选举主节点。

FE 端口:
8030:FE HTTP Server 端口(http_port)
9020:FE Thrift Server 端口(rpc_port)
9030:FE MySQL Server 端口(query_port)
9010:FE 内部通讯端口(edit_log_port)
6090:FE 云原生元数据服务 RPC 监听端口(cloud_native_meta_port)
注意:如需在集群中部署多个 FE 节点,您必须为所有 FE 节点分配相同的 http_port。官方文档有这个要求:https://docs.starrocks.io/zh/docs/deployment/deploy_manually/#%E7%AC%AC%E4%B8%80%E6%AD%A5%E5%90%AF%E5%8A%A8-leader-fe-%E8%8A%82%E7%82%B9


BE/CN:
BE:Backend 简称 BE,是 StarRocks 的后端节点,该节点在存算一体集群中负责数据存储和执行查询。
数据存储:BE 具有等效的数据存储能力。FE 根据预定义规则将数据分发到各个 BE。BE 转换导入的数据,将数据写入所需格式,并为数据生成索引。
SQL 执行:FE 根据查询的语义将每个 SQL 查询解析为逻辑执行计划,然后将逻辑计划转换为可以在 BE 上执行的物理执行计划。BE 在本地存储数据以及执行查询,避免了数据传输和复制,极大地提高了查询性能。存算分离。

CN:Compute Node,计算节点,该节点在存算分离或存算一体集群中负责执行查询。

BE/CN 端口:
9060:BE/CN Thrift Server 端口(be_port)
8040:BE/CN HTTP Server 端口(be_http_port)
9050:BE/CN 心跳服务端口(heartbeat_service_port)
8060:BE/CN bRPC 端口(brpc_port)
9070:BE/CN 的额外 Agent 服务端口。(starlet_port)


Broker:和外部HDFS/对象存储等外部数据对接的中转服务,辅助提供导入导出功能。

安装之前先检查是否有端口冲突(FE & BE/CN):
netstat -an |grep -E "8030|9020|9030|9010|6090"
netstat -an |grep -E "9060|8040|9050|8060|9070"


docker方式安装ClickHouse
部署官方介绍:
https://docs.starrocks.io/zh/docs/deployment/prepare_deployment_files/
内有安装包部署和docker部署方式的详细介绍。


关于starrocks的docker镜像:
从 v3.1.14、v3.2.10 和 v3.3.3 版本开始,StarRocks 提供的 Docker 镜像命名格式为 starrocks/{Component}-{OS}:{Version},其中 Component 表示镜像的组件(包括 fe、be和 cn),OS 表示操作系统(包括 centos 和 ubuntu),Version 表示版本号(例如 3.3.3)。Docker 将自动识别您的 CPU 架构并拉取相应的镜像。请确保您选择了正确版本的镜像。
在 v3.1.14、v3.2.10 和 v3.3.3 版本之前,StarRocks 提供的 Docker 镜像位于 starrocks/artifacts-ubuntu 和 starrocks/artifacts-centos7 仓库中。


下载指定tag的对应版本镜像:
docker pull starrocks/<Component>-<OS>:<version>
运行/启动docker容器:
docker run --rm starrocks/<Component>-<OS>:<version> tar -cf - -C /release . | tar -xvf -

我准备部署存算一体(需要部署FE+BE节点):
docker pull starrocks/fe-centos:3.3.3
docker pull starrocks/be-centos:3.3.3

国外的docker镜像已无法下载,尝试国内的:
https://docker.aityp.com/
搜索 starrocks

如果节点分开部署,则按需下载镜像:
docker.io/starrocks/fe-ubuntu:3.3-latest
docker.io/starrocks/be-ubuntu:3.3-latest
docker.io/starrocks/cn-ubuntu:3.3-latest

我直接下载allin1镜像:docker.io/starrocks/allin1-ubuntu:3.3.2
详情:https://docker.aityp.com/image/docker.io/starrocks/allin1-ubuntu:3.3.2


执行 docker pull 下载镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/starrocks/allin1-ubuntu:3.3.2

为了使用方便重新打个 tag
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/starrocks/allin1-ubuntu:3.3.2  starrocks/starrocks-allin1:3.3.2

查看镜像元数据
docker inspect starrocks/starrocks-allin1:3.3.2

运行/启动docker容器:
docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -itd --name starrocks starrocks/starrocks-allin1:3.3.2

如果要映射 BE/CN Thrift Server 端口则执行: 
docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -p 9060:9060 -itd --name starrocks starrocks/starrocks-allin1:3.3.2


StarRocks用户权限管理
参考:https://docs.starrocks.io/zh/docs/administration/user_privs/privilege_overview/
用户是可以被授权的实体,权限和角色均可以被赋予给用户。用户拥有的最大权限合集为自身权限与所拥有角色权限的并集。StarRocks 保证每个用户只能执行被授权的操作。
StarRocks 建议您在大部分情况下使用角色来分发权限。即,根据业务场景创建角色,将权限赋予给角色后,再将角色赋予给用户。

系统预置角色有:
root:拥有全局权限。root 用户默认拥有 root 角色。StarRocks 集群最初创建时,系统会自动生成 root 用户,该用户拥有 root 权限。由于 root 用户、角色的权限范围过大,建议您在后续使用和维护集群时创建新的用户和角色,避免直接使用此用户和角色。root 用户的密码请您妥善保管。
cluster_admin:拥有集群的管理权限。包含对节点的操作权限,如增加、减少节点。 cluster_admin 角色拥有对集群节点的上、下线权限,请妥善赋权。建议您不要将 cluster_admin 或任何包含此角色的自定义角色设置为用户的默认角色,防止因误操作而导致的节点变更。
db_admin:拥有数据库的管理权限。包含所有 CATALOG、数据库、表、视图、物化视图、函数及全局函数、资源组、插件等对象的所有操作权限。
user_admin:拥有用户和角色的管理权限。包含创建用户、角色、赋权等权限。
public:任何用户都拥有、并在任何会话下都默认激活此角色,包含新增用户。public 角色默认不拥有任何权限,您可以对此角色的权限范围进行修改。

命令行登录StarRocks数据库

进入docker容器本地连接StarRocks数据库创建用户和授权
docker exec -it starrocks /bin/bash
mysql -h127.0.0.1 -P9030 -uroot

-- DROP USER test;

-- 创建用户时不指定默认角色
-- CREATE USER test IDENTIFIED BY '1q2w3e';

-- 创建用户的同时指定默认角色(加 DEFAULT ROLE role_s)
CREATE USER test IDENTIFIED BY '1q2w3e' DEFAULT ROLE db_admin;

-- 激活角色
-- 默认激活角色
默认角色为用户提供了一道基础的权限屏障。
例如,用户 A 拥有 role_query 和 role_delete 两个角色,分别包含了查询和删除的权限。StarRocks 建议您仅将 role_query 作为默认角色,以防止误执行 DELETE 或 TRUNCATE 等高危操作而导致数据丢失。
当您确认需要执行上述操作时,可以在手动设置激活角色后执行。
当用户没有默认角色时,在登录集群后自动激活系统预置的 public 角色。

激活默认角色可以通过 CREATE USER 的 DEFAULT ROLE 关键字进行设置,例如:
CREATE USER test IDENTIFIED BY '1q2w3e' DEFAULT ROLE db_admin;
也可以在后续通过 ALTER USER 进行更改,同时也可以通过 SET DEFAULT ROLE 更改。

-- 手动激活角色
除了默认角色,用户也可以在会话内手动选择激活一个或多个已拥有的角色。您可以通过 SHOW GRANTS 命令查看当前用户拥有的权限和可以激活的角色,并通过 SET ROLE 命令来设置当前的激活角色,生效范围为当前会话。
SET ROLE 命令是覆盖的。例如,用户登录时是默认激活了 default_role,执行 SET ROLE role_s之后,用户此时拥有的是 role_s 的权限和自身权限。

mysql> exit;

重新以新用户登录
mysql -h127.0.0.1 -P9030 -utest -p

-- 查看当前用户拥有的权限和可以激活的角色
SHOW GRANTS;

mysql> show grants;
+--------------+---------+--------------------------------+
| UserIdentity | Catalog | Grants                         |
+--------------+---------+--------------------------------+
| 'test'@'%'   | NULL    | GRANT 'db_admin' TO 'test'@'%' |
+--------------+---------+--------------------------------+


-- 查询当前登录会话的角色
-- SELECT CURRENT_ROLE();

mysql> SELECT CURRENT_ROLE();
+----------------+
| CURRENT_ROLE() |
+----------------+
| db_admin       |
+----------------+

如果当前角色为空的话,会提示相关操作无权限,需要手动激活权限 SET ROLE role_s,会话级生效。


-- 如果要修改用户的默认角色
-- SET DEFAULT ROLE role_xxx

创建测试数据库 testdb 和测试表 test01


-- 创建数据库
CREATE DATABASE IF NOT EXISTS testdb;
USE testdb;


-- 创建表(主键表)
DROP TABLE IF EXISTS test01;
CREATE TABLE IF NOT EXISTS test01 (
    id INT NOT NULL,
    info STRING,
    cnt INT,
    uptime DATETIME
)
PRIMARY KEY (id)
DISTRIBUTED BY HASH (id)
;

-- 创建表-明细表(建表不指定属性默认为无主键表/明细表)
DROP TABLE IF EXISTS test02;
CREATE TABLE IF NOT EXISTS test02 (
    id INT,
    info STRING,
    cnt INT,
    uptime DATETIME
);


-- INSERT导入时不指定作业LABLE会自动生成LABLE
INSERT INTO test01 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');

-- INSERT导入时指定作业LABLE
INSERT INTO test01 WITH LABEL test01_002 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');
-- 查看INSERT导入作业结果
SHOW LOAD WHERE label="test01_002"; 

-- 覆盖写(覆盖目的表数据)
INSERT OVERWRITE test01 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');
-- INSERT OVERWRITE test01 WITH LABEL test01_005 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');
-- SHOW LOAD WHERE label="test01_005"; 


-- 清空表
TRUNCATE TABLE test01;
TRUNCATE TABLE test02;

查询数据:可通过 MySQL Client、DBeaver等 SQL 客户端工具连接 StarRocks 进行数据查询
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select version();"
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from test01;"
-- 指定 catalog.db.table 格式
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from default_catalog.testdb.test01;"


-- Stream Load 导入数据

Stream Load导入详细介绍可参考官方资料:https://docs.starrocks.io/zh/docs/sql-reference/sql-statements/loading_unloading/STREAM_LOAD/
Stream Load语法:
curl --location-trusted -u <username>:<password> -XPUT <url>
(
    data_desc
)
[opt_properties] 


curl StreamLoad 参数说明:
--location-trusted  
    此参数用于允许 curl 将认证凭据传输给任何重定向的 URL。
-u root  
    用于登录 StarRocks 的用户名。指定密码格式为 -u root:pwd,无密码格式为 -u root:

data_desc: 用于描述源数据文件,包括源数据文件的名称、格式、列分隔符、行分隔符、目标分区、以及与 StarRocks 表之间的列对应关系等。data_desc 中的参数可以分为三类:公共参数、CSV 适用的参数、以及 JSON 适用的参数。
opt_properties: 用于指定一些导入相关的可选参数。指定的参数设置作用于整个导入作业。
data_desc & opt_properties 详细介绍参考官网:https://docs.starrocks.io/zh/docs/sql-reference/sql-statements/loading_unloading/STREAM_LOAD/

-T filename  
    T 代表传输(Transfer),用于指定需要传输的文件名。
-H 设置 header 参数:
    label:crashdata-0  
        与此 Stream Load 作业关联的标签。标签必须唯一,因此如果多次运行作业,您可以添加一个数字保持递增。
    where: <condition1>[, <condition2>, ...] 可选参数,用于指定过滤条件。如果指定该参数,StarRocks 会按照指定的过滤条件对转换后的数据进行过滤。只有符合 WHERE 子句中指定的过滤条件的数据才会导入。
    column_separator:,  
        如果导入的文件使用单个 , 作为列分隔符,则设置如上所示。如果使用其他分隔符,则在此处设置该分隔符。常见分隔符包括 \t、, 和 |。
    skip_header:1  
        某些 CSV 文件会在首行(Header)记录所有的列名,还有些会在第二行记录所有列的数据类型信息。如果 CSV 文件有一或两个 Header 行,需要将 skip_header 设置为 1 或 2。如果您使用的 CSV 没有 Header 行,请将其设置为 0。
    enclose:\"  
        如果某些字段包含带有逗号的字符串,则需要用双引号括起该字段。本教程使用的示例数据集中,地理位置信息包含逗号,因此需将 enclose 设置为 \",其中 \ 用于转义 "。
    max_filter_ratio:1  
        导入数据中允许出现错误行的比例,范围 0~1,默认值为 0。理想情况下,应将其设置为 0,即当导入的数据中有任意一行出现错误时,导入作业会失败。本教程中需要将其设置为 1,即在调试过程中,允许所有数据行出现错误。
    timeout: 可选参数。用于导入作业的超时时间。取值范围:1 ~ 259200。单位:秒。默认值:600。除了 timeout 参数可以控制该导入作业的超时时间外,您还可以通过 FE 配置参数 stream_load_default_timeout_second 来统一控制 Stream Load 导入作业的超时时间。如果指定了timeout 参数,则该导入作业的超时时间以 timeout 参数为准;如果没有指定 timeout 参数,则该导入作业的超时时间以stream_load_default_timeout_second 为准。
    strict_mode: 
        可选参数。用于指定是否开严格模式。取值范围:true 和 false。默认值:false。true 表示开启,false 表示关闭。
        关于该模式的介绍,参见 严格模式(https://docs.starrocks.io/zh/docs/loading/load_concept/strict_mode/)
        如果开启严格模式,StarRocks 会把错误的数据行过滤掉,只导入正确的数据行,并返回错误数据详情。
        如果关闭严格模式,StarRocks 会把转换失败的错误字段转换成 NULL 值,并把这些包含 NULL 值的错误数据行跟正确的数据行一起导入。
        实际导入过程中,正确的数据行和错误的数据行都有可能存在 NULL 值。如果目标列不允许 NULL 值,则 StarRocks 会报错,并把这些包含 NULL 值的数据行过滤掉。
        对于 Stream Load、Broker Load、Routine Load 和 Spark Load,导入作业能够容忍的因数据质量不合格而过滤掉的错误数据行所占的最大比例,由作业的可选参数 max_filter_ratio 控制。INSERT 导入方式当前不支持 max_filter_ratio 参数。
        不同导入方式 strict_mode 默认值不同:        
        使用 Stream Load、Broker Load、Routine Load 和 Spark Load 执行数据导入时,需要通过参数 strict_mode 来设置严格模式。参数取值范围:true 和 false。默认值:false。true 表示开启,false 表示关闭。
        使用 INSERT 执行数据导入时,需要通过会话变量 enable_insert_strict 来设置严格模式。变量取值范围:true 和 false。默认值:true。true 表示开启,false 表示关闭。
    columns:  
        此参数用于将 CSV 文件中的列映射到 StarRocks 表中的列。当前教程中使用的 CSV 文件中有大量的列,而 StarRocks 表中的列经过裁剪,仅保留部分列。未包含在表中的列在导入过程中都将被跳过。
        注意:
        columns 参数支持数据转换逻辑,在 CSV 文件中经常会有不符合标准的日期和时间,导入时可以指定数据转换逻辑、将日期和时间数据转换为 DATETIME 类型的逻辑。
        例如:如果数据集中的日期是以 MM/DD/YYYY 为格式(CRASH_DATE 列)、时间以 HH:MI 为格式(CRASH_TIME)的2个单独的列:
        08/05/2014,9:10,BRONX,10469,40.8733019,-73.8536375,"(40.8733019, -73.8536375)",
        由于 StarRocks 中的 DATETIME 格式为 YYYY-MM-DD HH:MI:SS,因此需要转换数据集中的数据,将两列数据合并成一列、并以空格分隔。则此处 columns: 参数应为:
        -H "columns:tmp_CRASH_DATE, tmp_CRASH_TIME, CRASH_DATE=str_to_date(concat_ws(' ', tmp_CRASH_DATE, tmp_CRASH_TIME), '%m/%d/%Y %H:%i')
        说明:
        通过设置以上参数可实现以下目标:
        将 CSV 文件的第一列内容分配给 tmp_CRASH_DATE 列;
        将 CSV 文件的第二列内容分配给 tmp_CRASH_TIME 列;
        通过 concat_ws() 函数,使用空格将 tmp_CRASH_DATE 列和 tmp_CRASH_TIME 列连接在一起;
        通过 str_to_date() 函数使用连接后的字符串生成 DATETIME 数据;
        将生成的 DATETIME 数据存储在列 CRASH_DATE 中。
  timezone: 可选参数。用于指定导入作业所使用的时区。默认为东八区 (Asia/Shanghai)。该参数的取值会影响所有导入涉及的、跟时区设置有关的函数所返回的结果。受时区影响的函数有 strftime、alignment_timestamp 和 from_unixtime 等,具体请参见设置时区。导入参数 timezone 设置的时区对应“设置时区”中所述的会话级时区。
  load_mem_limit: 可选参数。导入作业的内存限制,最大不超过 BE(或 CN)的内存限制。单位:字节。默认内存限制为 2 GB。
  partial_update: 可选参数。部分更新。是否使用部分列更新。取值包括 TRUE 和 FALSE。默认值:FALSE。
  partial_update_mode: 部分更新模式。
      可选参数。指定部分更新的模式,取值包括 row 和 column:
      row:默认值,指定使用行模式执行部分更新,比较适用于较多列且小批量的实时更新场景。
      column:指定使用列模式执行部分更新,比较适用于少数列并且大量行的批处理更新场景。在该场景,开启列模式,更新速度更快。例如,在一个包含 100 列的表中,每次更新 10 列(占比 10%)并更新所有行,则开启列模式,更新性能将提高 10 倍。
  merge_condition: 可选参数。
      用于指定作为更新生效条件的列名。这样只有当导入的数据中该列的值大于等于当前值的时候,更新才会生效。StarRocks v2.5 起支持条件更新。参见通过导入实现数据变更。
      详情参考:https://docs.starrocks.io/zh/docs/loading/Load_to_Primary_Key_tables/
      注意:指定的列必须为非主键列,且仅主键表支持条件更新。
      
      StarRocks 的主键表支持通过 Stream Load、Broker Load 或 Routine Load 导入作业,对 StarRocks 表进行数据变更,包括插入、更新和删除数据。不支持通过 Spark Load 导入作业或 INSERT 语句对 StarRocks 表进行数据变更。
      StarRocks 还支持部分更新 (Partial Update) 和条件更新 (Conditional Update)。
      StarRocks 的主键表目前支持 UPSERT 和 DELETE 操作,不支持区分 INSERT 和 UPDATE 操作。
      在创建导入作业时,StarRocks 支持在导入作业的创建语句或命令中添加 __op 字段,用于指定操作类型。
      不同的导入方式,定义 __op 字段的方法也不相同:
          如果使用 Stream Load 导入方式,需要通过 columns 参数来定义 __op 字段。
          如果使用 Broker Load 导入方式,需要通过 SET 子句来定义 __op 字段。
          如果使用 Routine Load 导入方式,需要通过 COLUMNS 参数来定义 __op 字段。
      根据要做的数据变更操作,您可以选择添加或者不添加 __op 字段。不添加 __op 字段的话,默认为 UPSERT 操作。
      主要涉及的数据变更操作场景如下:
          1)当数据文件只涉及 UPSERT 操作时,可以不添加 __op 字段。
          2)当数据文件只涉及 DELETE 操作时,必须添加 __op 字段,并且指定操作类型为 DELETE。
          3)当数据文件中同时包含 UPSERT 和 DELETE 操作时,必须添加 __op 字段,并且确保数据文件中包含一个代表操作类型的列,取值为 0 或 1。其中,取值为 0 时代表 UPSERT 操作,取值为 1 时代表 DELETE 操作。
      使用说明:
          1)必须确保待导入的数据文件中每一行的列数都相同。
          2)所更新的列必须包含主键列。

      
-XPUT: 指定 HTTP 请求方法。必选参数。Stream Load 当前只支持 PUT 方法。
url: 用于指定 StarRocks 表的 URL 地址。必选参数。格式为  http://<fe_host>:<fe_http_port>/api/<database_name>/<table_name>/_stream_load
     您可以通过 SHOW frontends 命令查看 FE 节点的 IP 地址和 HTTP 端口号,例如:mysql -h192.168.1.250 -P9030 -uroot  -p -e "SHOW frontends;"


查看 FE 节点的信息:
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW PROC '/frontends';"
或者
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW frontends;"
Enter password: 
+------------------------------+-----------+-------------+----------+-----------+---------+--------+------------+------+-------+-------------------+---------------------+----------+--------+---------------------+---------------+
| Name                         | IP        | EditLogPort | HttpPort | QueryPort | RpcPort | Role   | ClusterId  | Join | Alive | ReplayedJournalId | LastHeartbeat       | IsHelper | ErrMsg | StartTime           | Version       |
+------------------------------+-----------+-------------+----------+-----------+---------+--------+------------+------+-------+-------------------+---------------------+----------+--------+---------------------+---------------+
| 127.0.0.1_9010_1731988679963 | 127.0.0.1 | 9010        | 8030     | 9030      | 9020    | LEADER | 1134139963 | true | true  | 180649            | 2025-01-08 08:33:14 | true     |        | 2025-01-06 07:34:32 | 3.3.2-857dd73 |
+------------------------------+-----------+-------------+----------+-----------+---------+--------+------------+------+-------+-------------------+---------------------+----------+--------+---------------------+---------------+


查看 BE 节点的信息:
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW PROC '/backends';"
或者 
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW backends;"
+-----------+-----------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------+---------------+--------------------------------------------------------+-------------------+-------------+----------+-------------------+------------+------------+---------------------------------------------------+----------+
| BackendId | IP        | HeartbeatPort | BePort | HttpPort | BrpcPort | LastStartTime       | LastHeartbeat       | Alive | SystemDecommissioned | ClusterDecommissioned | TabletNum | DataUsedCapacity | AvailCapacity | TotalCapacity | UsedPct | MaxDiskUsedPct | ErrMsg | Version       | Status                                                 | DataTotalCapacity | DataUsedPct | CpuCores | NumRunningQueries | MemUsedPct | CpuUsedPct | DataCacheMetrics                                  | Location |
+-----------+-----------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------+---------------+--------------------------------------------------------+-------------------+-------------+----------+-------------------+------------+------------+---------------------------------------------------+----------+
| 10001     | 127.0.0.1 | 9050          | 9060   | 8040     | 8060     | 2025-01-06 07:34:36 | 2025-01-08 08:32:04 | true  | false                | false                 | 87        | 100.417 MB       | 20.218 GB     | 91.651 GB     | 77.94 % | 77.94 %        |        | 3.3.2-857dd73 | {"lastSuccessReportTabletsTime":"2025-01-08 08:31:07"} | 20.316 GB         | 0.48 %      | 8        | 0                 | 2.17 %     | 0.0 %      | Status: Normal, DiskUsage: 0B/0B, MemUsage: 0B/0B |          |
+-----------+-----------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+-----------------------+-----------+------------------+---------------+---------------+---------+----------------+--------+---------------+--------------------------------------------------------+-------------------+-------------+----------+-------------------+------------+------------+---------------------------------------------------+----------+

查看 Broker 节点信息:
mysql -h192.168.1.250 -P9030 -uroot -p -e "SHOW PROC '/brokers';"
+--------------+-----------+------+-------+---------------------+---------------------+--------+
| Name         | IP        | Port | Alive | LastStartTime       | LastUpdateTime      | ErrMsg |
+--------------+-----------+------+-------+---------------------+---------------------+--------+
| allin1broker | 127.0.0.1 | 8000 | true  | 2025-01-06 07:34:41 | 2025-01-08 08:44:04 |        |
+--------------+-----------+------+-------+---------------------+---------------------+--------+

-- Stream Load 导入数据示例

mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "TRUNCATE TABLE test01;"
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;"

-- 从本地文件导入数据--UPSET(不指定__op、则默认UPSET)
-- StarRocks 的 Stream Load 导入方式需要使用 curl 命令,涉及许多参数
echo '1,"aaa",100,"2024-11-10 08:30:21.111222"
2,"bbb",102,"2024-11-11 08:35:58.333444"' > test01.csv

curl --location-trusted -u test:1q2w3e \
    -T ./test01.csv             \
    -H "label:test01_001"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -H "columns:id,info,cnt,uptime" \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load

-- 命令上指定用户密码方式: -u user:pwd
-- 命令上指定用户如果没有设置密码,则: -u user:
-- 命令上也可以不指定密码,等提示输入再输入密码,则:-u user
curl --location-trusted -u test \
    -T ./test01.csv             \
    -H "label:test01_002"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -H "columns:id,info,cnt,uptime" \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load


-- 导入时也可以不指定 columns(csv文件中的列数要一致):
curl --location-trusted -u test:1q2w3e \
    -T ./test01.csv             \
    -H "label:test01_003"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load

-- 从本地文件导入数据--DELETE(必须指定__op,仅主键表支持DELETE操作,无主键表不支持。如果不指定__op则默认为UPSET)
curl --location-trusted -u test:1q2w3e \
    -T ./test01.csv             \
    -H "label:test01_004"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -H "columns:__op='delete'"     \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load

注意:仅主键表支持DELETE操作,如果是非主键表,上述命令执行后的效果是追加写的效果,多次执行,每次都会追加csv文件中的数据到目的表。


-- 如果csv文件数据中同时存在 UPSET 和 DELETE 的数据行,则需要在 csv 文件中包含 __op 字段、填写对应值(0 代表 UPSET;1 代表 DELETE)
-- 准备数据文件 test01_b.csv,数据中的第一列为临时列、值为0代表UPSET、1代表DELETE
echo '0,1,"aaa",100,"2024-11-10 08:30:21.111222"
1,2,"bbb",102,"2024-11-11 08:35:58.333444"' > test01_b.csv

查看准备好的csv文件内容:
root@2ce391eef088:/data/deploy/starrocks# cat test01_b.csv 
0,1,"aaa",100,"2024-11-10 08:30:21.111222"
1,2,"bbb",102,"2024-11-11 08:35:58.333444"


-- 目的表 INSERT 插入数据
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "INSERT OVERWRITE test01 (id,info,cnt,uptime) VALUES (1,'aaa',100,'2024-11-10 08:30:21.111222'),(2,'bbb',102,'2024-11-11 08:35:58.333444');"
-- 查询数据
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;"

root@2ce391eef088:/data/deploy/starrocks# mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;" 
Enter password: 
+------+------+------+----------------------------+
| id   | info | cnt  | uptime                     |
+------+------+------+----------------------------+
|    2 | bbb  |  102 | 2024-11-11 08:35:58.333444 |
|    1 | aaa  |  100 | 2024-11-10 08:30:21.111222 |
+------+------+------+----------------------------+

-- 执行csv导入(含UPSET和DELETE)
-- -H "columns:xxx" 中指定 __op=opflag 操作列(临时列opflag),后面指定csv数据文件中对应的数据列:opflag,id,info,cnt,uptime
curl --location-trusted -u test:1q2w3e \
    -T ./test01_b.csv             \
    -H "label:test01_005"       \
    -H "column_separator:,"     \
    -H "skip_header:0"          \
    -H "enclose:\""             \
    -H "max_filter_ratio:0"     \
    -H "columns:__op=opflag,opflag,id,info,cnt,uptime"     \
    -XPUT http://localhost:8030/api/testdb/test01/_stream_load

-- 执行结果:
root@2ce391eef088:/data/deploy/starrocks# curl --location-trusted -u test:1q2w3e \
>     -T ./test01_b.csv             \
>     -H "label:test01_013"       \
>     -H "column_separator:,"     \
>     -H "skip_header:0"          \
>     -H "enclose:\""             \
>     -H "max_filter_ratio:0"     \
>     -H "columns:__op=opflag,opflag,id,info,cnt,uptime"     \
>     -XPUT http://localhost:8030/api/testdb/test01/_stream_load
{
    "TxnId": 149,
    "Label": "test01_013",
    "Status": "Success",
    "Message": "OK",
    "NumberTotalRows": 2,
    "NumberLoadedRows": 2,
    "NumberFilteredRows": 0,
    "NumberUnselectedRows": 0,
    "LoadBytes": 86,
    "LoadTimeMs": 186,
    "BeginTxnTimeMs": 0,
    "StreamLoadPlanTimeMs": 2,
    "ReadDataTimeMs": 0,
    "WriteDataTimeMs": 58,
    "CommitAndPublishTimeMs": 124

执行后的效果是更新目的表中id=1的行、删除id=2的行。

-- 查询数据
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;"

root@2ce391eef088:/data/deploy/starrocks# mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "SELECT * FROM test01;" 
Enter password: 
+------+------+------+----------------------------+
| id   | info | cnt  | uptime                     |
+------+------+------+----------------------------+
|    1 | aaa  |  100 | 2024-11-10 08:30:21.111222 |
+------+------+------+----------------------------+


导入后查询数据:
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from test01;"

root@2ce391eef088:/data/deploy/starrocks# mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from test01;" 
Enter password: 
+------+------+------+----------------------------+
| id   | info | cnt  | uptime                     |
+------+------+------+----------------------------+
|    1 | aaa  |  100 | 2024-11-10 08:30:21.111222 |
|    2 | bbb  |  102 | 2024-11-11 08:35:58.333444 |
|    1 | aaa  |  100 | 2024-11-10 08:30:21.111222 |
|    2 | bbb  |  102 | 2024-11-11 08:35:58.333444 |
+------+------+------+----------------------------+


指定数据目录(catalog)查询(格式为 catalog.db.table):
mysql -h192.168.1.250 -P9030 -utest -Dtestdb -p -e "select * from default_catalog.testdb.test01;"

数据目录(catalog)

-- 创建外部数据目录(External Catalog)
可参考:《StarRocks常用命令》中的 创建外部数据目录 介绍。


-- 查看当前集群中的所有 Catalog,包括 Internal Catalog 和 External Catalog
-- 注意:一个 StarRocks 集群中只有一个默认的 internal catalog,名为 default_catalog,不支持删除;default_catalog 也是 StarRocks 集群中唯一的 internal catalog

mysql> SHOW CATALOGS\G;

mysql> show catalogs;
+-----------------------+----------+------------------------------------------------------------------+
| Catalog               | Type     | Comment                                                          |
+-----------------------+----------+------------------------------------------------------------------+
| default_catalog       | Internal | An internal catalog contains this cluster's self-managed tables. |
| jdbc01_mysql_catalog  | Jdbc     | NULL                                                             |
| jdbc02_pg_catalog     | Jdbc     | NULL                                                             |
| jdbc03_oracle_catalog | Jdbc     | NULL                                                             |
+-----------------------+----------+------------------------------------------------------------------+
4 rows in set (0.00 sec)

Catalog:Catalog 名称。
Type:Catalog 类型。如果是 default_catalog,则返回 Internal。如果是 external catalog,则返回 external catalog 的类型,例如 Hive, Hudi, Iceberg。
Comment:Catalog 的备注。
  1)在创建 external catalog 时不支持为 external catalog 添加备注,所以如果是 external catalog,则返回的 Comment 为 NULL。
  2)如果是 default_catalog,则默认返回的 Comment 为 An internal catalog contains this cluster's self-managed tables.。default_catalog 是 StarRocks 集群中唯一的 internal catalog,不允许删除。

注意:
只有拥有 External Catalog USAGE 权限的用户才能查看到该 Catalog。如果没有该权限,仅返回 default_catalog。您可以使用 GRANT 命令进行授权操作。


StarRocks 连接方式

DBeaver连接StarRocks
DBeaver有对应的StarRocks类型,配置参数和MySQL类型参数基本相同。也可以直接用MySQL类型连接StarRocks。
数据库填写格式:catalog.database,例如:default_catalog.testdb

jdbcUrl(FE-MySQL): jdbc:mysql://y.y.y.y:9030
loadUrl(FE-HTTP): y.y.y.y:8030,y.y.y.y:8030,y.y.y.y:8030

如果用 DataX 连接 StarRocks,配置如下:
"writer": {
                    "name": "starrockswriter",
                    "parameter": {
                        "username": "xxxx",
                        "password": "xxxx",
                        "database": "xxxx",
                        "table": "xxxx",
                        "column": ["k1", "k2", "v1", "v2"],
                        "preSql": [],
                        "postSql": [], 
                        "jdbcUrl": "jdbc:mysql://x.x.x.x:9030",
                        "loadUrl": ["y.y.y.y:8030", "y.y.y.y:8030"],
                        "loadProps": {}
                    }
                }
CloudCanal:

Client地址/端口:ip/domain  :  9030 + 
Http地址/端口:ip/domain    :  8030 + 
数据库(database):catalog.testdb
认证方式(authType):账号密码
账号(user):user
密码(password):pwd

jdbcUrl(mysql)
loadUrl(http)

httpUrl
jdbcUrl

Catalog.Database


query_host:query_port  192.168.1.101:9030
http_host http_port    192.168.1.101:8030,192.168.1.102:8030,192.168.1.103:8030
=>
jdbcUrl = jdbc:mysql://192.168.1.101:9030
loadUrl = 192.168.1.101:8030,192.168.1.102:8030,192.168.1.103:8030
loadUrl = http://192.168.1.101:8030,http://192.168.1.102:8030,http://192.168.1.103:8030

相关文章:

StarRocks 安装部署

StarRocks 安装部署 StarRocks端口&#xff1a; 官方《配置检查》有服务端口详细描述&#xff1a; https://docs.starrocks.io/zh/docs/deployment/environment_configurations/ StarRocks架构&#xff1a;https://docs.starrocks.io/zh/docs/introduction/Architecture/ Sta…...

Python Matplotlib库:从入门到精通

Python Matplotlib库&#xff1a;从入门到精通 在数据分析和科学计算领域&#xff0c;可视化是一项至关重要的技能。Matplotlib作为Python中最流行的绘图库之一&#xff0c;为我们提供了强大的绘图功能。本文将带你从Matplotlib的基础开始&#xff0c;逐步掌握其高级用法&…...

线程概念、操作

一、背景知识 1、地址空间进一步理解 在父子进程对同一变量进行修改时发生写时拷贝&#xff0c;这时候拷贝的基本单位是4KB&#xff0c;会将该变量所在的页框全拷贝一份&#xff0c;这是因为修改该变量很有可能会修改其周围的变量&#xff08;局部性原理&#xff09;&#xf…...

【PySide6拓展】QSoundEffect

文章目录 【PySide6拓展】QSoundEffect 音效播放类**基本概念****什么是 QSoundEffect&#xff1f;****QSoundEffect 的特点****安装 PySide6** **如何使用 QSoundEffect&#xff1f;****1. 播放音效****示例代码&#xff1a;播放音效** **代码解析****QSoundEffect 的高级用法…...

33【脚本解析语言】

脚本语言也叫解析语言 脚本一词&#xff0c;相信很多人都听过&#xff0c;那么什么是脚本语言&#xff0c;我们在开发时有一个调试功能&#xff0c;但是发布版是需要编译执行的&#xff0c;体积比较大&#xff0c;同时这使得我们每次更新都需要重新编译&#xff0c;客户再…...

【Unity】 HTFramework框架(五十九)快速开发编辑器工具(Assembly Viewer + ILSpy)

更新日期&#xff1a;2025年1月23日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 开发编辑器工具MouseRayTarget焦点视角Collider线框Assembly Viewer搜索程序集ILSpy反编译程序集搜索GizmosElement类找到Gizmos菜单找到Gizmos窗口分析A…...

如何解决TikTok网络不稳定的问题

TikTok是目前全球最受欢迎的短视频平台之一&#xff0c;凭借其丰富多彩的内容和社交功能吸引了数以亿计的用户。然而&#xff0c;尽管TikTok在世界范围内的使用情况不断增长&#xff0c;但不少用户在使用过程中仍然会遇到网络不稳定的问题。无论是在观看视频时遇到缓冲&#xf…...

告别页面刷新!如何使用AJAX和FormData优化Web表单提交

系列文章目录 01-从零开始学 HTML&#xff1a;构建网页的基本框架与技巧 02-HTML常见文本标签解析&#xff1a;从基础到进阶的全面指南 03-HTML从入门到精通&#xff1a;链接与图像标签全解析 04-HTML 列表标签全解析&#xff1a;无序与有序列表的深度应用 05-HTML表格标签全面…...

WireShark4.4.2浏览器网络调试指南:数据统计(八)

概述 Wireshark 是一款功能强大的开源网络协议分析软件&#xff0c;被广泛应用于网络调试和数据分析。随着互联网的发展&#xff0c;以及网络安全问题日益严峻&#xff0c;了解如何使用 Wireshark进行浏览器网络调试显得尤为重要。最新的 Wireshark4.4.2 提供了更加强大的功能…...

Hypium+python鸿蒙原生自动化安装配置

Hypiumpython自动化搭建 文章目录 Python安装pip源配置HDC安装Hypium安装DevEco Testing Hypium插件安装及使用方法​​​​​插件安装工程创建区域 Python安装 推荐从官网获取3.10版本&#xff0c;其他版本可能出现兼容性问题 Python下载地址 下载64/32bitwindows安装文件&am…...

2025创业思路和方向有哪些?

创业思路和方向是决定创业成功与否的关键因素。以下是一些基于找到的参考内容的创业思路和方向&#xff0c;旨在激发创业灵感&#xff1a; 一、技术创新与融合&#xff1a; 1、智能手机与云电视结合&#xff1a;开发集成智能手机功能的云电视&#xff0c;提供通讯、娱乐一体化体…...

实验五---控制系统的稳定性分析---自动控制原理实验课

一 实验目的 1、理解控制系统稳定性的概念 2、掌握多种判定系统稳定性的原理及方法 3、掌握使用Matlab软件进行控制系统的稳定性分析 二 实验仪器 计算机&#xff0c;MATLAB仿真软件 三 实验内容及步骤 1.计算系统闭环特征根&#xff0c;判别系统稳定性&#xff1b; 2.绘制系统…...

AttributeError: can‘t set attribute ‘lines‘

报错&#xff1a; ax p3.Axes3D(fig) ax.lines [] AttributeError: cant set attribute lines 总结下来&#xff0c;解决方案应包括&#xff1a; 1. 使用ax.clear()方法清除所有内容。 2. 逐个移除lines中的元素。 3. 检查matplotlib版本&#xff0c;确保没有已知的bug。…...

Day07:缓存-数据淘汰策略

Redis的数据淘汰策略有哪些 ? &#xff08;key过期导致的&#xff09; 在redis中提供了两种数据过期删除策略 第一种是惰性删除&#xff0c;在设置该key过期时间后&#xff0c;我们不去管它&#xff0c;当需要该key时&#xff0c;我们再检查其是否过期&#xff0c;如果过期&…...

基于聚类与相关性分析对马来西亚房价数据进行分析

碎碎念&#xff1a;由于最近太忙了&#xff0c;更新的比较慢&#xff0c;提前祝大家新春快乐&#xff0c;万事如意&#xff01;本数据集的下载地址&#xff0c;读者可以自行下载。 1.项目背景 本项目旨在对马来西亚房地产市场进行初步的数据分析&#xff0c;探索各州的房产市…...

Java—工具类类使用

工具类的调用&#xff1a;工具类名.方法名 工具类的书写&#xff1a; 示例&#xff1a; 写一个遍历数组的工具类 import java.util.Arrays;public class ArrayUtil {private ArrayUtil() {} //用私有化构造方法不让外界创建关于它的对象//定义static静态方法&#xff0c;因…...

游戏开发领域 - 游戏引擎 UE 与 Unity

游戏引擎 游戏引擎是用于开发电子游戏的软件框架&#xff0c;它提供图形渲染、物理模拟、音频处理、动画系统、脚本编写等功能&#xff0c;帮助开发者高效创建电子游戏 但是&#xff0c;游戏引擎也不仅限于游戏开发&#xff0c;还广泛应用于其他领域&#xff0c;例如&#xff…...

[NVME] PMRCAP-Persistent Memory Region Capabilities

This register indicates capabilities of the Persistent Memory Region(持久内存区域) If the controller does not support the Persistent Memory Region feature, then this register shall be cleared to 0h BitsTypeResetDescription31:25RO 0hReserved24ROImpl Spec…...

Ollama windows安装

Ollama 是一个开源项目&#xff0c;专注于帮助用户本地化运行大型语言模型&#xff08;LLMs&#xff09;。它提供了一个简单易用的框架&#xff0c;让开发者和个人用户能够在自己的设备上部署和运行 LLMs&#xff0c;而无需依赖云服务或外部 API。这对于需要数据隐私、离线使用…...

vim操作简要记录

操作容易忘记&#xff0c;记录一下基本使用的 :wq保存退出 :w :q :q! :wq! i I a A 方向键 h左 j下 k上 l右 dd删除方行&#xff08;这其实是剪切行操作&#xff0c;不过一般用作删除&#xff0c;长按可删除&#xff0c;不过按.执行上一次操作删除更快&#xff09; .执行上…...

车载软件架构 --- 基于AUTOSAR软件架构的ECU开发流程小白篇

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 简单&#xff0c;单纯&#xff0c;喜欢独处&#xff0c;独来独往&#xff0c;不易合同频过着接地气的生活…...

汇编基础语法及其示例

1.汇编指令 1.1汇编指令的基本格式 <opcode>{<cond>}{s} <Rd> , <Rn> , <shifter_operand> <功能码>{<条件码>}{cpsr影响位} <目标寄存器> , <第一操作寄存器> , <第二操作数> 注&#xff1a;第一操作寄存器…...

android获取EditText内容,TextWatcher按条件触发

android获取EditText内容&#xff0c;TextWatcher按条件触发 背景&#xff1a;解决方案&#xff1a;效果&#xff1a; 背景&#xff1a; 最近在尝试用原生安卓实现仿element-ui表单校验功能&#xff0c;其中涉及到EditText组件内容的动态校验&#xff0c;初步实现功能后&#…...

Blazor-Blazor Web App项目结构

让我们还是从创建项目开始&#xff0c;来一起了解下Blazor Web App的项目情况 创建项目 呈现方式 这里我们可以看到需要选择项目的呈现方式&#xff0c;有以上四种呈现方式 ● WebAssembly ● Server ● Auto(Server and WebAssembly) ● None 纯静态界面静态SSR呈现方式 WebAs…...

【线上问题定位处理】及【性能优化】系列文章

目录 性能优化 性能优化 九大服务架构性能优化方式 如何进行GC调优 如何排查线上系统出现的Full GC MySQL - 性能优化 MySQL - 分库分表 大数据查询的处理方案 MySQL优化手段有哪些 服务CPU100%问题如何快速定位? 服务内存OOM问题如何快速定位? JVM调优6大步骤 线…...

现代 linux 里一个进程允许打开几个文件:答案是 1024 或者更多

&#xff08;1&#xff09; 测试一下&#xff1a; &#xff08;2&#xff09; 谢谢...

【仓颉】仓颉编程语言Windows安装指南 配置环境变量 最简单解决中文乱码问题和其他解决方案大全

适用于版本&#xff1a; 0.53.13 &#xff5c; 发布日期&#xff1a; 2024-10-24 &#xff08;以后的可能也适用&#xff09; 本机windows版本&#xff1a;24H2 内部版本号windows 10.0.26100 因为仓颉的官方文档一直没更新&#xff0c;所以在这里写一下如何在windows上完成这些…...

dm8在Linux环境安装精简步骤说明(2024年12月更新版dm8)

dm8在Linux环境安装详细步骤 - - 2025年1月之后dm8 环境介绍1 修改操作系统资源限制2 操作系统创建用户3 操作系统配置4 数据库安装5 初始化数据库6 实例参数优化7 登录数据库配置归档与备份8 配置审计9 创建用户10 屏蔽关键字与数据库兼容模式11 jdbc连接串配置12 更多达梦数据…...

学技术学英语:elasticsearch查询的两阶段queryingfetching

To understand Elasticsearch’s distributed search, let’s take a moment to understand how querying and fetching work. Unlike simple CRUD tasks, distributed search is like navigating through a maze of shards spread across the cluster. In Elasticsearch, CRU…...

Linux_线程互斥

互斥的相关概念 共享资源&#xff1a;指多个进程或线程可以共同访问和操作的资源临界资源&#xff1a;被保护的共享资源就叫做临界资源临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区互斥&#xff1a;任何时刻&#xff0c;互斥保证有…...