缓存驱逐
缓存驱逐概述
由于Alluxio使用的存储空间是有限的,缓存驱逐功能通过多种策略驱逐旧数据,以确保有足够的存储空间缓存新数据。
Alluxio将通过两种不同的方式驱逐其缓存:
写入时驱逐
后台异步驱逐
写入时驱逐
写入时驱逐是在Alluxio中写入page时同步检查并清除缓存的数据。 当Alluxio即将写入一个page且总缓存将超过存储容量时,将触发驱逐。
缓存驱逐器
Alluxio提供以下五种缓存驱逐器来驱逐缓存数据:
LRUCacheEvictor
(默认):LRU缓存驱逐策略FIFOCacheEvictor
:FIFO缓存驱逐策略LFUCacheEvictor
:LFU缓存驱逐策略。page根据对数计数按桶顺序排序。桶内的page按LRU顺序排序。NondeterministicLRUCacheEvictor
:具有不确定性缓存驱逐策略的LRU。均匀驱逐LRU尾部的元素。TwoChoiceRandomEvictor
:两选随机客户端缓存驱逐策略。它选择两个随机page ID并驱逐使用最少的一个。
worker缓存和client缓存有不同的属性来定义它们各自的驱逐器。 例如,以下在alluxio-site.properties
中的配置为worker缓存和client缓存设置LRUCacheEvictor
。
后台异步驱逐
如果缓存空间不足,写入时驱逐将大大降低性能。 后台异步驱逐旨在提前异步驱逐缓存数据,以避免在写操作期间驱逐缓存数据。
要启用后台异步驱逐功能,请在alluxio-site.properties
中添加以下配置:
通过设置上述配置,Alluxio将创建一个后台线程,检查page缓存空间是否达到高水位线阈值。 一旦触发此条件,它将驱逐缓存的page直到达到低水位线阈值。 后台线程将周期性进行检查。
动态更新配置的REST API
Alluxio提供以下REST API,用户可以动态设置和获取异步驱逐配置:
启用异步驱逐并更新相关参数
禁用异步驱逐
获取当前异步驱逐参数
Last updated