缓存管理
Alluxio 充当计算层与持久化存储之间的缓存层。理解如何管理这个缓存——什么数据进入、什么数据保留、什么数据被移除——是实现稳定高性能工作负载的关键。
我想做什么?
缓存生命周期工作原理
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 索引。
目标:零冷启动,关键模型永不被驱逐。
推理前预加载:
job load --path s3://models/llama3/ --submit --verify固定防止 LRU 驱逐:
alluxio priority add --path s3://models/llama3/ --priority high模型更新时:
job free --path s3://models/llama3-v1/ --submit→ 重新加载 v2
周期性更新数据
示例:每日 ETL 输出、再训练数据集。
目标:数据新鲜且命中率高。
使用
maxAgefilter(如1d),使 Alluxio 在过期后下次访问时重新验证上游更新后运行
job load --skip-if-exists预热新版本
临时或检查点数据
示例:训练检查点、临时查询结果。
目标:避免短生命周期数据填满缓存。
使用
skipCachefilter 完全绕过缓存,或设置较短 TTL(如
1h)+LOW优先级,使其优先被驱逐
合规 / 敏感数据
示例:PII 日志、GDPR 限定目录。
目标:严格限制数据在缓存中的存活时长。
设置符合合规要求的 TTL 时间窗口(如
90d)处理完成后立即执行
job free
Last updated