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