Tachyon是一個高性能、高容錯、基於記憶體的開源分散式存儲系統,並具有類Java的檔案API、外掛程式式的底層檔案系統、兼容Hadoop MapReduce和Apache Spark等特徵。Tachyon能夠為集群框架(如Spark、MapReduce等)提供記憶體級速度的跨集群檔案共享服務。Tachyon充分使用記憶體和檔案對象之間的世代(Lineage)信息,因此速度很快,官方號稱最高比HDFS吞吐量高300倍。目前,很多公司(如Pivotal、EMC、紅帽等)已經在使用Tachyon,並且來自20個組織或公司(如雅虎、英特、紅帽等)的60多個貢獻者都在為其貢獻代碼。Tachyon是於UC Berkeley數據分析棧(BDAS)的存儲層,它還是Fedora作業系統自帶套用。
基本介紹
- 軟體名稱:Tachyon
- 開發商:Apache
- 軟體語言:英語
Tachyon簡介
- 當兩個Spark作業需要共享數據時,必須通過寫磁碟操作。比如:作業1要先把生成的數據寫入HDFS,然後作業2再從HDFS把數據讀出來。在此,磁碟的讀寫可能造成性能瓶頸。
- 由於Spark會利用自身的JVM對數據進行快取,當Spark程式崩潰時,JVM進程退出,所快取數據也隨之丟失,因此在工作重啟時又需要從HDFS把數據再次讀出。
- 當兩個Spark作業需操作相同的數據時,每個作業的JVM都需要快取一份數據,不但造成資源浪費,也極易引發頻繁的垃圾收集,造成性能的降低。
- 當兩個Spark作業需要共享數據時,無需再通過寫磁碟,而是藉助Tachyon進行記憶體讀寫,從而提高計算效率。
- 在使用Tachyon對數據進行快取後,即便在Spark程式崩潰JVM進程退出後,所快取數據也不會丟失。這樣,Spark工作重啟時可以直接從Tachyon記憶體讀取數據了。
- 當兩個Spark作業需要操作相同的數據時,它們可以直接從Tachyon獲取,並不需要各自快取一份數據,從而降低JVM記憶體壓力,減少垃圾收集發生的頻率。
Tachyon重要特徵
- 類Java的檔案API: Tachyon的原生API同Java的檔案類非常相似,並提供了InputStream和OutputStream接口,還支持記憶體映射IO;
- 兼容MapReduce和Spark:Tachyon實現了Hadoop的FileSystem接口,因此,MapReduce和Spark無需做任何修改就可以使用Tachyon;
- 外掛程式式的底層檔案系統:Tachyon基於Hadoop並從底層重建了Hadoop平台。Tachyon具有一個通用、方便於接入不同底層檔案系統的接口。目前支持的檔案系統包括HDFS、S3、GlusterFS、單節點本地檔案系統等,對其他檔案系統的支持將很快實現。
- 支持本地原始表:Tachyon提供了對多列數據的本地支持,且提供了選擇項,以決定是否將Hot列放入記憶體以節省空間;
- 瀏覽檔案系統的Web界面:用戶能夠通過Web界面瀏覽檔案系統,尤其在Debug模式下,管理員還能夠查看每個檔案的詳細信息,如檔案位置、檢查點(Checkpoint)路徑等;
- 支持命令行互動:用戶能夠使用命令“./bin/tachyon tfs”同Tachyon進行互動,如往檔案系統中複製數據以及從檔案系統往外複製數據;
- 高容錯性:Tachyon具有良好的容錯機制,Master和Worker都有自己的容錯方式。Master使用ZooKeeper進行容錯,Master中保存的元數據使用Journal進行容錯,Master還對各個Worker的狀態進行監控,發現Worker失效時會自動重啟對應的Worker。對於具體的檔案數據,Tachyon使用世代關係進行容錯。