You need to enable JavaScript to run this app.
导航

Proton按需缓存使用手册

最近更新时间2024.05.06 16:43:11

首次发布时间2024.05.06 16:43:11

1 介绍

Proton按需缓存是指:通过配置规则来“允许或禁止缓存某些路径下数据”。按需缓存可以帮助用户更好地管理缓存,提高缓存的效率和安全性。默认情况下,所有能被访问到的数据都会被缓存。

2 使用方法

2.1 不缓存指定路径下的数据

在一些场景下,我们期望某些低价值的数据不要占用过多的缓存磁盘空间,从而将磁盘资源使用到其它高价值的场景中,可以通过配置“黑名单列表”可以指定哪些路径下的数据不被缓存。在 EMR 集群详情页的服务列表 > Proton > 服务参数 > 添加自定义参数配置中给 proton.ini新增自定义参数。
黑名单配置格式为:

proton.metaserver.<scheme>.<bucket_name>.data-cache.blacklist

例如:

proton.metaserver.tos.my-bucket.data-cache.blacklist=/user/tmp,/tmp

其中/user/tmp,/tmp为黑名单路径,多个路径以逗号进行分割,路径既可以是目录,也可以是文件。配置完成后,需要重启Proton。
通过上述配置,可以使/user/tmp,/tmp这两个路径下(包含所有后继子孙路径)的任何数据都不会被缓存到Proton中。除此之外其他路径下的数据则会被缓存到Proton中。

2.2 仅缓存指定路径下的数据

在一些场景下,我们期望只缓存部分高价值的数据在缓存中,可以通过同时配置“白名单列表”和“黑名单列表”来指定哪些路径下的数据可以被缓存,除此之外的数据都不被缓存。在 EMR 集群详情页的服务列表 > Proton > 服务参数 > 添加自定义参数配置中给 proton.ini 新增自定义参数。
白名单配置格式为:

proton.metaserver.<scheme>.<bucket_name>.data-cache.allowlist

例如:

proton.metaserver.tos.my-bucket.data-cache.allowlist=/user/hadoop,/user/hive
proton.metaserver.tos.my-bucket.data-cache.blacklist=/

配置完成后,需要重启Proton。通过上述配置,可以使/user/hadoop,/user/hive这两个路径下(包含所有孩子路径、孙子路径等一切后继路径)的任何数据都被缓存到Proton中。除此之外其他路径下的数据则会不会被缓存到Proton中。

2.3 最长前缀匹配规则

黑名单、白名单配置遵循“最长前缀匹配”规则。我们用path_a表示待匹配的路径,所有白名单、黑名单中的路径共同构成一个路径列表。对于路径列表中的任意一个路径path_i,如果path_i是path_a的前缀,则我们称path_i与path_a前缀匹配。对路径列表中所有与path_a前缀匹配的路径,最长的一个就是path_a的“最长前缀匹配”。

举例来说,假设我们有如下的白名单、黑名单配置。

/      --> [allow]
/a/b   --> [deny]
/a/b/c --> [allow]
  • 对于/b/file,它的最长前缀匹配是/,而/属于白名单,因此/b/file可以被缓存。

  • 对于/a/b/file,它的前缀匹配包括:/、/a/b,其中/a/b更长,因此最长前缀匹配是/a/b,而/a/b属于黑名单,因此/a/b/file不可以被缓存。

  • 对于/a/b/c/file,它的前缀匹配包括:/、/a/b、/a/b/c,其中/a/b/c最长,因此最长前缀匹配是/a/b/c,而/a/b/c属于白名单,因此/a/b/c/file可以被缓存。

如果在白名单、黑名单配置中都没有配置根目录 ,则会自动将根目录添加到白名单配置中。因此在“不缓存指定路径下的数据”小节的配置中,只配置了黑名单,就实现了:黑名单中路径全部不缓存,其他路径都缓存的效果。

3 注意事项

  1. 一个路径同时存在于黑名单和白名单中是非法的场景,会导致Proton无法启动。同一个路径只能排他地存在于白名单或者黑名单。

  2. 仅支持配置具体的路径,不支持通配符,符号'*'会被识别为路径的一部分。