1.1  Tachyon文件存储方式

为了高效地对文件进行管理,Tachyon文件在内存中按块(Block)组织。文件和块信息保存在Master端,每个Worker以块为单位进行存储和管理,一个块可以同时被缓存在不同Worker的内存中。在UFS中,以文件形式对Tachyon文件进行备份。

6.Tachyon文件存储以及读写过程_spark

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、均写完成之后报告文件写入完成,供读取。