Tachyon是一个分布式内存文件系统,能够在集群里以访问内存的速度来访问存储在Tachyon里的文件。Tachyon是架构在最底层的分布式文件系统和上层的各类计算框架之间的一种中间件,其主要职责是将那些不须要落地到DFS里的文件,落地到分布式内存文件系统中,来达到共享内存,从而提升效率,减小内存冗余,减小GC时间等。
html
Tachyon的架构是传统的Master—Slave架构,这里和Hadoop相似,TachyonMaster里WorkflowManager是 Master进程,由于是为了防止单点问题,因此经过Zookeeper作了HA,能够部署多台Standby Master。Slave是由Worker Daemon和Ramdisk构成。Ramdisk使用off heap memory。Master和Worker直接的通信协议是Thrift。算法
下图是Tachyon的架构:
架构
Tachyon的容错机制是怎么样的呢?框架
Tachyon使用lineage这个咱们在Spark的RDD里已经很熟悉的概念,经过异步的向Tachyon的底层文件系统作Checkpoint。异步
当咱们向Tachyon里面写入文件的时候,Tachyon会在后台异步的把这个文件给checkpoint到它的底层存储,好比HDFS,S3.. etc...分布式
这里用到了一个Edge的算法,来决定checkpoint的顺序。oop
比较好的策略是每次当前一个checkpoint完成以后,就会checkpoint一个最新生成的文件。固然像Hadoop,Hive这样的中间文件,须要删除的,是不须要checkpoint的。spa
以下图所示:htm
关于从新计算时,资源的分配策略:中间件
目前Tachyon支持2种资源分配策略:
一、优先级的资源分配策略
二、公平调度的分配策略
Tachyon是一个基于内存的分布式文件系统,一般位于分布式存储系统和计算框架之间,能够在不一样框架之间共享内存,同时能够减小内存冗余和基于JVM内存计算框架的GC时间。
Tachyon也有相似RDD的lineage概念,input文件和output文件都是会有lineage信息,这样来达到容错。而且Tachyon也利用lineage信息,异步的作checkpoint,文件丢失状况下,也能利用两种资源分配策略来优先计算丢失掉的资源。
项目地址:http://tachyon-project.org/index.html