缓存管理

Alluxio 充当计算层与持久化存储之间的缓存层。理解如何管理这个缓存——什么数据进入、什么数据保留、什么数据被移除——是实现稳定高性能工作负载的关键。

我想做什么?

目标
工具
指南

在作业运行前预热数据集

job load

防止关键模型被驱逐

Cache Priority(缓存固定)

自动过期过时或临时数据

TTL

控制缓存数据的新鲜度

Cache Filter(maxAge

按团队或目录限制缓存用量

Quota

在作业完成或版本更新后移除数据集

job free

缓存生命周期工作原理

1. 数据进入缓存

两种路径:

  • 被动缓存(read-through):缓存未命中时,Worker 从 UFS 拉取数据并自动缓存。无需任何配置——但第一次读取会较慢。

  • 主动预加载:使用 job load 在任何读取发生前将数据推入缓存,消除定时作业和模型推理的冷启动延迟。

缓存加载 →

2. 策略控制哪些数据保留及保留多久

数据缓存后,四种机制管控其行为:

  • Cache Priority(缓存固定) — 将数据标记为 HIGH 优先级,使 LRU 在有低优先级数据可驱逐时不会优先驱逐它

  • TTL — 设置硬过期时间:数据超过生命周期后被驱逐,与访问频率无关

  • Cache Filter — 控制准入:immutable、skip cache 或 max-age 重新验证

  • Quota — 限制目录树可消耗的缓存空间上限

缓存策略 →

3. 数据离开缓存

三种方式:

  • 自动驱逐:LRU(默认)、LFU 或 FIFO 在 Worker 空间不足时移除数据

  • TTL 过期:后台扫描移除生命周期已到期的数据

  • 手动移除job free 显式清除一个路径——用于废弃某个模型版本或按需释放空间时

缓存驱逐 →

策略指南

LLM / ML 模型推理

示例:微调模型、基础模型权重、Embedding 索引。

目标:零冷启动,关键模型永不被驱逐。

  1. 推理前预加载:job load --path s3://models/llama3/ --submit --verify

  2. 固定防止 LRU 驱逐:alluxio priority add --path s3://models/llama3/ --priority high

  3. 模型更新时:job free --path s3://models/llama3-v1/ --submit → 重新加载 v2

周期性更新数据

示例:每日 ETL 输出、再训练数据集。

目标:数据新鲜且命中率高。

  • 使用 maxAge filter(如 1d),使 Alluxio 在过期后下次访问时重新验证

  • 上游更新后运行 job load --skip-if-exists 预热新版本

临时或检查点数据

示例:训练检查点、临时查询结果。

目标:避免短生命周期数据填满缓存。

  • 使用 skipCache filter 完全绕过缓存,或

  • 设置较短 TTL(如 1h)+ LOW 优先级,使其优先被驱逐

合规 / 敏感数据

示例:PII 日志、GDPR 限定目录。

目标:严格限制数据在缓存中的存活时长。

  • 设置符合合规要求的 TTL 时间窗口(如 90d

  • 处理完成后立即执行 job free

Last updated