7. Starrocks的导入(一)

Starrocks的导入会被定义为一个job,每个job有自己的标签 (Label),由用户指定或系统自动生成。每个标签在一个数据库内都是唯一的。

并且StarRocks 中所有导入方式都提供原子性保证,即同一个导入作业内的所有有效数据要么全部生效,要么全部不生效,不会出现仅导入部分数据的情况。这里不出意外的采用了二阶段提交方式,只有所有节点就绪才会进行i叫操作

那么我们就说下导入的详细信息

从导入的使用来说,分为同步导入和异步导入。

对于同步导入,会阻塞等待作业执行完成返回导入结果。可以通过返回的导入结果判断导入作业是否成功。

支持同步模式的导入方式有 Stream Load 和 INSERT。

对于异步导入,会直接创建一个job并返回,异步执行这个job,这就需要通过语句或命令来查看导入作业的状态,并且根据导入作业的状态来判断数据导入是否成功。

支持异步模式的导入方式有 Broker Load、Routine Load 和 Spark Load。

那么我们具体同步导入和异步导入之间详情

  1. Stream Load

从本地文件或者流式数据而来,通过 HTTP 协议导入本地文件、或通过程序导入数据流。一般导入10 GB 以内数据,支持json和CSV,属于同步导入

  1. Broker Load

从HDFS,Amazon S3等存储系统导入而来,支持导入数十到数百 GB,可选 CSV Parquet ORC格式,属于异步导入

  1. Routine Load

从Apache Kafka®导入,支持微批导入 MB 到 GB 级,可以导入CSV,JSON,Avro,属于异步导入

  1. Spark Load

HDFS,Hive. 通过 Apache Spark™ 集群初次从 HDFS 或 Hive 迁移导入大量数据, 支持数十 GB 到 TB级别。CSV,ORC,Parquet

  1. INSERT INTO SELECT

常见于外表导入,属于同步导入

官方也附上了一个图,来展示不同数据源下,该如何选择导入方式

这里我们在给出一些Load重要的配置项

max_load_timeout_second 和 min_load_timeout_second

最大最小超时区间

desired_max_waiting_jobs

等待队列可以容纳的导入作业的最大个数,默认值为 1024

max_running_txn_num_per_db

StarRocks 集群每个数据库中正在进行的导入事务的最大个数

label_keep_max_second

导入作业记录在 StarRocks 系统的保留时长,默认值为 3 天。

load_process_max_memory_limit_bytes 和 load_process_max_memory_limit_percent

导入的最大内存使用量和最大内存使用百分比,用来限制单个 BE 上所有导入作业的内存总和的使用上限。

主要是百分比,默认为 30%,假设 BE 所在机器物理内存大小为 M,则用于导入的内存上限为:M x 90% x 90% x 30%。

发表评论

邮箱地址不会被公开。 必填项已用*标注