1.1 Tachyon文件存储方式
为了高效地对文件进行管理,Tachyon文件在内存中按块(Block)组织。文件和块信息保存在Master端,每个Worker以块为单位进行存储和管理,一个块可以同时被缓存在不同Worker的内存中。在UFS中,以文件形式对Tachyon文件进行备份。
1.2 Tachyon读写过程
由于Tachyon文件存储位置的多样性(内存,UFS),Tachyon API提供了多种文件读写类型以处理不同情况。
(1)读类型
CACHE –读取数据并缓存在本地内存
NO_CACHE –读取数据但不缓存在本地内存
过程:
1、首先,直接读取缓存文件信息。
2、如果不存在缓存信息,则请求主节点获取文件信息,从本地内存文件系统中读取该文件。
3、如果本地Ramfs中不存在,则从远程读取块文件
4、如果选择CACHE 类型,读取过来之后还会选择在本地Ramfs存储
5、如果远程读取失败,尝试读取检查点文件,连接到底层UFS进行文件读取。
6、底层文件读取失败,才会抛出I/O异常
(2)写类型
MUST_CACHE –只写本地内存,空间不足时报ERROR
TRY_CACHE –只写本地内存,空间不足时报WARNING
THROUGH –只写UFS
CACHE_THROUGH – 同时写本地内存和UFS(TRY_CACHE +THROUGH)
ASYNC_THROUGH–先写本地内存,异步备份到UFS
过程:
1、首先请求主节点,请求分配FID
2、根据不同的写入请求,启动相应的文件流向本地临时文件夹写(checkpoint文件),再存在本地,本地存在Ramfs,则随机选取工作节点
3、写入临时目录成功之后将checkpoint文件重命名为FID,写入数据目录
4、如果需要想向底层文件写,过程同上
5、均写完成之后报告文件写入完成,供读取。