【详述】在SR外表导数中遇到以下两个问题
1.SR外表导数报close index channel failed — 目标集群写入request中txnid=0
2.SR外表导数任务失败,报 java.net.SocketTimeoutException:Read timed out,但数据正常写入到目标集群,可正常查询
问题1 在某一天频繁出现,之后复现不出来
问题2 在最近的使用中频繁出现
【背景】通过SR外表将源集群表数据导入到目标集群 - 数据表使用聚合模型,不分区1500个分桶2个副本,在starrocks中show data显示源集群数据表的数据量600G(2副本).
源集群是业务主要使用集群,目前每天的数据导入量巨大,查询很少
集群修改的配置信息如下:
be.conf
源集群:
streaming_load_rpc_max_alive_time_sec = 2400
tablet_writer_open_rpc_timeout_sec = 1200
cumulative_compaction_num_threads_per_disk = 6
base_compaction_num_threads_per_disk = 6
目标集群:
streaming_load_rpc_max_alive_time_sec = 2400
tablet_writer_open_rpc_timeout_sec = 1200
cumulative_compaction_num_threads_per_disk = 2
base_compaction_num_threads_per_disk = 2
【业务影响】
【StarRocks版本】1.19.5
【集群规模】源集群:3fe(3 follower) +5be(fe与be混部) 目标集群:3fe(3 follower) + 7be(fe与be混部)
【机器信息】源集群:80C/1.5T/万 目标集群:80C/256G/万兆
【附件】
复现步骤:
- 在源集群创建 Aggregate key模型,不分区1500个分桶,2个副本的数据表ads_cs_service_waybill_mid_di_1957
建表语句如下:
CREATE TABLEads_cs_service_waybill_mid_di_1957(
waybill_novarchar(200) NULL,
inc_daydate REPLACE_IF_NOT_NULL NULL,
等145个字段,聚合类型均为 REPLACE_IF_NOT_NULL
) ENGINE=OLAP
AGGREGATE KEY(waybill_no)
DISTRIBUTED BY HASH(waybill_no) BUCKETS 1500
PROPERTIES (
“replication_num” = “2”,
“in_memory” = “false”,
“storage_format” = “DEFAULT”
); - 在目标集群上创建相同的表 ads_test.ads_cs_service_waybill_mid_di
- 在源集群上创建到目标集群的SR外表 mid_external_1500buckets,其中host为源集群的master节点
CREATE EXTERNAL TABLEmid_external_1500buckets(
waybill_novarchar(200) NULL ,
inc_daydate REPLACE_IF_NOT_NULL NULL",
等145个字段,聚合类型均为 REPLACE_IF_NOT_NULL
)
AGGREGATE KEY(waybill_no)
DISTRIBUTED BY HASH(waybill_no) BUCKETS 1500
PROPERTIES (
“replication_num” = “2”,
“in_memory” = “false”,
“storage_format” = “DEFAULT”,
“host” = “10.152.3.36”,
“port” = “9020”,
“user” = “root”,
“password” = “xxx”,
“database” = “ads_test”,
“table” = “ads_cs_service_waybill_mid_di”
); - 在源集群上导入数据到SR外表中,导入sql
set query_timeout=14400;
insert into mid_external_1500buckets with label mid_external_1500buckets_0211_1418 select /*+ set_var(parallel_fragment_exec_instance_num = 10,query_timeout=14400) */ * from ads_cs_service_waybill_mid_di_1957;
-
cbo已开启,查询计划如下:
-
问题1排查步骤:
SR外表导数报close index channel failed — 目标集群写入request中txnid=0
- 在be节点 be.INFO 中找到报错的load_id
- 在所有be节点的 be.INFO中查找load id,找到报错的be节点
- 到该be节点继续用load_id查找 be.INFO,查看线程上下文,显示目标集群无法连接,目标集群上该load任务的写入request中txn_id=0
- 在这个时间节点目标集群所有be节点都重启了
目标集群be.out
- 在目标集群 be.INFO中 搜 F0127
目标集群be节点cpu和内存使用率截图
- 其他信息:
目标集群fe和be信息
- 问题2 排查步骤
SR外表导数任务失败,报 java.net.SocketTimeoutException:Read timed out,但数据正常写入到目标集群,可正常查询
- 报错信息如下图
- 源集群beINFO中查找load_id
- 拿到该任务的txn_id,分别在源集群和目标集群中查找,发现有publish成功的日志
源集群:
目标集群:
















