缓存过滤
缓存过滤概述
在某些情况下,数据集的总大小可能会超过分配给Alluxio缓存的总磁盘空间。 为了解决这个问题,Alluxio提供了缓存过滤功能,使我们可以仅缓存热门数据。 通过配置缓存过滤,用户可以根据文件路径指定要缓存的特定文件。
配置
要启用缓存过滤功能,请在alluxio-site.properties文件中添加以下配置:
alluxio.user.client.cache.filter.enabled=true
alluxio.user.client.cache.filter.class=alluxio.client.file.cache.filter.RuleSetBasedCacheFilter
alluxio.user.client.cache.filter.type=RULE_SET
alluxio.user.client.cache.filter.config.file=${ALLUXIO_HOME}/conf/cache_filter.json
alluxio.user.client.cache.filter.config.check.interval=5min- alluxio.user.client.cache.filter.config.file用于指定设置过滤规则的JSON文件路径
- alluxio.user.client.cache.filter.config.check.interval用于检查JSON文件的间隔
这两个属性允许在运行中的集群上动态更新过滤规则。
在JSON文件中设置过滤规则
Alluxio中有三种不同类型的过滤规则:
- Immutable(不可变):假设UFS上的文件永远不会更改;这些文件被缓存且永不驱逐 
- Skip Cache(跳过缓存):假设UFS上的文件经常更改;这些文件从不缓存,总是从UFS读取 
- Max Age(存活时间):假设UFS上的文件将在指定时间间隔内更改;这些文件被缓存,但设置为在一定时间间隔后过期 
下面是一个示例JSON文件,展示了如何设置规则。
{
  "apiVersion": 1,
  "data": {
    "immutable": [".*/immutable_tables/.*"],
    "skipCache": [".*/skip_cache_tables/.*"],
    "maxAge": {".*/mutable_tables/.*":"10s"},
    "defaultType": "immutable"
  },
  "metadata": {
    "immutable": [".*/immutable_tables/.*"],
    "skipCache": [".*/skip_cache_tables/.*"],
    "maxAge": {".*/mutable_tables/.*":"10s"},
    "defaultType": "immutable"
  }
}这个JSON文件有两个部分。一部分是metadata(元数据),另一部分是data(数据)。让我们以数据部分为例。
- immutable键设置了一个带有正则表达式模式- .*/immutable_tables/.*的单例列表,因此这些文件将永不驱逐。
- skipCache键设置了一个带有正则表达式模式- .*/skip_cache_tables/.*的单例列表,因此这些文件将永不缓存。
- maxAge键设置了一个单条目映射- {".*/mutable_tables/.*":"10s"}。 匹配正则表达式模式- .*/mutable_tables/.*的文件将被缓存,并在- 10s后过期。
metadata部分的设置方式相同,因此相同文件的元数据将具有相同的缓存行为。 这两种类型被分别定义,以允许每种类型具有不同的行为。
最后,我们可以为不匹配任何配置的正则表达式模式的文件设置默认类型。 在这个例子中,defaultType是immutable。
Last updated