Alluxio利用E-MapReduce(简称EMR)集群的本地节点的内存和磁盘对数据进行分布式缓存。本文为您介绍缓存相关的内容。
背景信息
缓存详细信息,请参见缓存。
缓存策略
客户端写新的数据块时,默认情况下会将其写入level0层存储。如果level0没有足够的可用空间, 则会尝试下一层存储。如果在所有层上均未找到存储空间,Alluxio会释放空间来存储新写入的数据块。默认的释放策略是LRUAnnotator,按照最近最少使用的顺序释放数据块。
客户端读取数据块时,如果数据已经存在于Alluxio中,则客户端将直接读取对应Worker节点;如果Alluxio中不存在数据,则会先缓存数据至Alluxio中,以便下次从Worker节点读取。
管理数据生命周期
数据生命周期管理常见命令如下表所示。
命令 | 功能 |
---|---|
free |
释放缓存中的数据。 |
load |
加载数据到Alluxio缓存中。 |
persist |
将Alluxio中的文件或目录持久化到底层文件系统中。 |
setTtl |
设置文件或目录的生存时间(TTL),单位为毫秒。 |
free
释放缓存中的数据。
释放数据是指从Alluxio缓存中删除数据,而不是从底层UFS中删除数据。释放操作后,数据仍然可供用户使用,但对Alluxio释放文件后尝试访问该文件的客户端来讲性能可能会降低。
- 语法
alluxio fs free <path>
- 示例:将tmp目录中的所有数据从缓存中释放。
alluxio fs free /tmp
返回如下信息。/tmp was successfully freed from Alluxio space.
load
加载数据到Alluxio缓存中。
- 语法
alluxio fs load <path>
- 示例:加载/tmp3/logs目录中的所有数据到Alluxio缓存中。
alluxio fs load /tmp3/logs
返回如下信息。/tmp3/logs loaded
persist
将Alluxio中的文件或目录持久化到底层文件系统中。
持久化数据是指将Alluxio存储中可能被修改过或未被修改过的数据写回UFS。 通过将数据写回到UFS,可以保证如果Alluxio发生故障数据还是可恢复的。
- 语法
alluxio fs persist <path>
- 示例:将Alluxio中tmp目录持久化到底层文件系统中。
alluxio fs persist /tmp
返回如下信息。persisted file /tmp with size 46
setTtl
设置文件或目录的生存时间(TTL),单位为毫秒。
如果当前时间大于该文件的创建时间与TTL时间之和时,行动参数将指示要执行的操作。delete操作(默认)将同时删除Alluxio和底层文件系统中的文件,而free操作仅仅删除Alluxio中的文件。
- 语法
alluxio fs setTtl [--action delete|free] <path> <time to live>
- 示例:
- 一分钟后,tmp目录将被删除。
alluxio fs setTtl /tmp 60000
返回如下信息。TTL of path '/tmp' was successfully set to 60000 milliseconds, with expiry action set to DELETE
- 一天后,dir目录缓存将被驱逐。
alluxio fs setTtl --action free /dir 86400000
返回如下信息。TTL of path '/dir' was successfully set to 86400000 milliseconds, with expiry action set to FREE
- 一分钟后,tmp目录将被删除。