StreamLoad场景下CN节点starlet_cache/star_cache下数据持续增长直至磁盘占满,清理机制为什么不生效?

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】StreamLoad场景下CN节点starlet_cache/star_cache下数据持续增长直至磁盘占满,没有清理机制吗?
【背景】做过哪些操作?
【业务影响】
【是否存算分离】是
【StarRocks版本】例如:3.3.7
【集群规模】例如:1fe+1be+1cn
【机器信息】26C/52G/万兆
【表模型】明细表
【导入或者导出方式】Stream Load(Flink1.17)
【联系方式】501508468@qq.com
【附件】
经排查,是 starlet_cache/star_cache目录下的文件过大导致磁盘占满后,CN崩溃。截图了一些Stream Load在CN上的该目录的文件大小统计(只是一部分)。
image
image
image
image


设置starlet_star_cache_disk_size_percent = 75,发现star_cache目录下的文件仍然持续增长,直到CN磁盘打满。CN使用的是hostPath,通过物理节点做了磁盘大小的限制。为什么这些block文件不会自动清理?

在容器里df一下看看.

image
image


第三张图是DeepSeek的回答,在官网上没找到相关解释。该表是内部表,最开始的时候,集群里没有BE节点。BE节点是后加上的。是不是说在存算分离架构下StreamLoad必须通过BE节点进行导入,CN仅负责执行Query?所以添加了BE节点后就不存在这个问题了(我还没验证)?CN不能完全替代BE节点吗?

容器中295GB容量, 配置cache可以使用75%, 即可以使用220~230GB左右. 整个star_cache目录应该没有超过230GB, 符合配置的要求. 如果有其它数据已经占用了磁盘容量, 需要相应地调低star_cache能使用的容量.

这个容量是star_cache能使用的绝对数值, 并不是使用到磁盘多少水位.

这个Stream Load的缓存太大,影响了其他表做查询时的缓存。为了控制Stream Load缓存的大小,我从官网文档里找了下FE和BE的配置项,并没有"star_cache能使用的容量"的配置项。但是我找到了这几个配置,不知道对这个问题是否有帮助? 有什么办法可以限制其大小?或者有一些提前的清理(不是等到触发阈值)
BE配置项:
load_data_reserve_hours

  • 默认值:4
  • 类型:Int
  • 单位:Hours
  • 是否动态:否
  • 描述:小批量导入生成的文件保留的时长。
  • 引入版本:-

BE配置: starlet_star_cache_disk_size_percent, 控制starcache能使用的磁盘容量.