|
UCBerkeley研發(fā)的Tachyon(超光子['t?ki???n],名字要不要這么太囂張啊:)是一款為各種集群并發(fā)計(jì)算框架提供內(nèi)存數(shù)據(jù)管理的平臺(tái),也可以說是一種內(nèi)存式的文件系統(tǒng)吧。如下圖,它就處于這樣一個(gè)層次:在現(xiàn)有存儲(chǔ)系統(tǒng)如HDFS之上,在Spark,MapReduce,Impala等各種計(jì)算框架之下。 
為什么要有這么一個(gè)框架呢?MapReduce就不說了,但像Spark這種內(nèi)存計(jì)算框架,為什么還需要再加一層內(nèi)存管理的文件系統(tǒng)?因?yàn)橄?span lang="EN-US">Spark這種,框架其實(shí)只提供了強(qiáng)大的內(nèi)存計(jì)算能力,但未提供存儲(chǔ)能力。那么默認(rèn)讓Spark自己直接在內(nèi)存管理數(shù)據(jù)還不夠嗎?下面就看一下現(xiàn)有的幾個(gè)問題。 問題1:不同任務(wù)或框架間交換數(shù)據(jù)慢不同任務(wù)或不同計(jì)算框架間的數(shù)據(jù)共享情況在所難免,例如Spark的分屬不同Stage的兩個(gè)任務(wù),或Spark與MapReduce框架的數(shù)據(jù)交互。在這種情況下,一般就需要通過磁盤來完成數(shù)據(jù)交換,而這通常是效率很低的。 
而引入Tachyon中間層后,數(shù)據(jù)交換實(shí)際上也是在內(nèi)存中進(jìn)行的。 
問題2:執(zhí)行引擎和存儲(chǔ)引擎是同一進(jìn)程這就是前面提到過的,讓Spark自己來管理內(nèi)存會(huì)出現(xiàn)的問題。默認(rèn)情況下,Spark的任務(wù)執(zhí)行和數(shù)據(jù)本身都在一個(gè)進(jìn)程內(nèi)。當(dāng)執(zhí)行出現(xiàn)問題時(shí)就會(huì)導(dǎo)致整個(gè)進(jìn)程崩潰,并丟失進(jìn)程內(nèi)的所有數(shù)據(jù)。 
而Tachyon這一層的引入,就相當(dāng)于將存儲(chǔ)引擎從Spark中抽離出來,從而每個(gè)任務(wù)進(jìn)程只負(fù)責(zé)執(zhí)行。進(jìn)程的崩潰不會(huì)丟失數(shù)據(jù),因?yàn)閿?shù)據(jù)都在Tachyon里面了。 
問題3:數(shù)據(jù)被重復(fù)加載和GC不同的Spark任務(wù)可能會(huì)訪問同樣的數(shù)據(jù),例如兩個(gè)任務(wù)都要訪問HDFS中的某些Block,像下圖中的Block1和3。這樣就沒辦法了,每個(gè)任務(wù)都要自己去磁盤加載數(shù)據(jù)到內(nèi)存中。而Tachyon不僅只保存一份數(shù)據(jù),而且它還使用堆外內(nèi)存,避免GC開銷。 
Tachyon如何容錯(cuò)?前面我們已經(jīng)看到了Tachyon如何進(jìn)一步提升Spark的性能的,包括避免數(shù)據(jù)落地到磁盤,共享數(shù)據(jù)以及堆外內(nèi)存避免GC等。但Tachyon本身又是如何容錯(cuò)的呢?不落地DFS中數(shù)據(jù)不是照樣會(huì)丟失嗎?而且Tachyon只在內(nèi)存中保存一份數(shù)據(jù)拷貝。有一種形象的說法是:Tachyon將lineage從Spark中下移到了自己。既然手握lineage,就有辦法了。跟Spark類似,它利用lineage信息(lineage-based recovery)和異步記錄的checkpoint來恢復(fù)數(shù)據(jù) (與Spark類似,都是基于RDD不可變性以及粗粒度操作才能完成的,不同點(diǎn)是Tachyon管理的可以是跨框架的lineage而不限于RDD和Spark的轉(zhuǎn)換?),所以Tachyon放心大膽地積極(aggressively)使用內(nèi)存。 
其次,Tachyon本身的master通過ZooKeeper集群管理,down機(jī)時(shí)會(huì)自動(dòng)選舉出新的leader,并且worker會(huì)自動(dòng)連接到新的leader上。 
現(xiàn)在Tachyon版本還只是0.5,資料也比較少。關(guān)于其異步checkpointing的圖算法也找到什么資料,還沒有搞懂。但看起來還挺有意思的,持續(xù)關(guān)注吧。 參考資料1 Tachyon-A Reliable Memory Centric Storage for Big Data Analytics 2 Tachyon-Reliable File Sharing at Memory-Speed Across Cluster Frameworks
|