starrocks routine load任务优化整体思路

338 阅读1分钟

routine_load_task_consume_second是单次routine load task消费kafka的最大时间(和最大数据量 max_routine_load_batch_size 两者取低) 如果是大数据量级别的调优可以参考:

首先要了解下 Routine Load Job并发度

单个Routine Load Job的并发度由以下四个值的最小值决定:

kafka_partition_num

desired_concurrent_number

alive_be_num

max_routine_load_task_concurrent_num

集群Task处理能力

集群Task处理能力为 routine_load_thread_pool_size * alive_be_num

当所有Routine Load Job的并发度之和大于集群Task处理能力,则可能出现 TOO_MANY_TASKS 的报错,导致部分Job处理不及时。

性能调优

总体思路

  • 降低导入QPS,集群总体的导入QPS尽量< 10

    • 计算方式: 集群 routine_load_task_num  / routine_load_task_consume_second
  • 增加单个导入事务的数据量,单个Routine Load Task导入的数据量 > 1G

    • 需要同时调整 max_routine_load_batch_size,routine_load_task_timeout_second 来实现
  • 单个BE上并发导入任务 routine_load_thread_pool_size 尽量< be_core_num / 2