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