久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

《Spark/Tachyon:基于內(nèi)存的分布式存儲系統(tǒng)》

 阿青哥Joe 2018-06-27

史鳴飛:大家好,,我是叫史鳴飛,,來自英特爾公司,接下來我向大家介紹一下Tachyon,。我事先想了解一下大家有沒有聽說過Tachyon,,或者是對Tachyon有沒有一些了解?對Spark呢,?

 

首先做一個介紹,,我來自英特爾的大數(shù)據(jù)團隊,我們團隊主要是致力于各種大數(shù)據(jù)的軟件開發(fā)以及這些軟件在工業(yè)界的推廣和應(yīng)用,,我所在的團隊主要負責(zé)Spark及其軟件棧的開發(fā)和推廣,。我們是國內(nèi)最早參加Spark開發(fā)和推廣的團隊,我們在2012年就加入了Spark社區(qū),。在Spark和相關(guān)的項目中間投入了大量的人力,,長期以來我們在Spark及相關(guān)項目中有超過10位活躍的貢獻者,在Spark項目中我們團隊代碼的貢獻量是排名前3的,。

 

下面是我今天演講的內(nèi)容的概要,,首先我會向大家做一個Tachyon的介紹,包括為什么會出現(xiàn)Tachyon,,Tachyon的基本架構(gòu),,Tachyon和現(xiàn)有系統(tǒng)的集成以及Tachyon一些基本的原理,接下來我會向大家介紹我們在使用Tachyon方面的經(jīng)驗和一些應(yīng)用的實例,,最后會向大家介紹一下Tachyon的發(fā)展情況和英特爾在Tachyon上的工作,。

 

Tachyon出現(xiàn)的背景是什么?首先內(nèi)存為王這句話這兩年很流行,,大數(shù)據(jù)處理對速度的追求是無止境的,。內(nèi)存的速度和磁盤的速度不是一個數(shù)量級的,,另一方面內(nèi)存的價格越來越低,內(nèi)存的容量越來越低大,,這就讓數(shù)據(jù)存在內(nèi)存中間就有了可行性,。伴隨著這種趨勢,大量的基于內(nèi)存的計算框架也出來了,,像Spark和SAP的HANA都是優(yōu)秀的基于內(nèi)存的計算框架,,但是現(xiàn)有的計算框架還面臨一些挑戰(zhàn)。Tachyon的出現(xiàn)就是為了解決這些問題的,,那么當(dāng)前基于內(nèi)存的大數(shù)據(jù)計算框架到底遇到了那些問題呢,?接下來我就以Spark為例,向大家分析一下,。

 

第一個問題是數(shù)據(jù)共享問題,,一個集群可能運行著多個計算框架和多個應(yīng)用,比如說一個集群上有可能運行著Spark,,同時還運行著Hadoop,,在現(xiàn)在的情況下他們兩個之間的數(shù)據(jù)共享是通過HDFS的。也就是說如果一個Spark的應(yīng)用結(jié)果的輸出是另外一個MapReduce任務(wù)輸入的話,,中間結(jié)果就必須要通過寫入和讀取HDFS才能實現(xiàn),,大家知道HDFS的讀寫首先是一個磁盤的IO,另外由于它的備份策略,,默認它有三份的備份,,這樣又會引入網(wǎng)絡(luò)的IO,這是一個很低效的過程,。第二個問題是緩存數(shù)據(jù)丟失的問題,,像Spark這樣的計算框架它的內(nèi)存管理模塊和計算執(zhí)行器是在同一個JVM里面的,如果它的執(zhí)行器發(fā)生一些異常導(dǎo)致執(zhí)行出現(xiàn)錯誤,,從而導(dǎo)致JVM退出的話,,那么緩存在JVM堆空間中的數(shù)據(jù)就會同時丟失掉,,這樣的話就會導(dǎo)致緩存數(shù)據(jù)丟失,。第三個問題是GC的問題,因為現(xiàn)在大部分的大數(shù)據(jù)的計算框架都是運行在JVM上的,,GC的開銷就是一個不可避免的問題,。對于像Spark這樣一個基于內(nèi)存的計算框架而言,,GC的問題尤其突出,它會把大量的數(shù)據(jù)緩存在JVM堆空間里面,,這些數(shù)據(jù)是計算時需要用到的數(shù)據(jù),GC是沒辦法清除掉的,,每一次full GC都會對這些數(shù)據(jù)做一個全局的掃描,,這是很耗時間的,,而且隨著計算時間的增長和堆內(nèi)存數(shù)據(jù)的增加,GC的開銷會越來越大,。

  

解決方法是什么呢,?我們首先分析導(dǎo)致這個問題的根本原因是什么,根本的原因就是現(xiàn)有的基于內(nèi)存的計算框架缺乏脫離于JVM的內(nèi)存管理模塊,。解決方法就是伴隨著Spark而產(chǎn)生的基于內(nèi)存的分布式存儲系統(tǒng)Tachyon,。Tachyon的設(shè)計思想主要有兩個,第一個是基于內(nèi)存的OffHeap的分布式存儲,,就是一定要把數(shù)據(jù)存儲在JVM堆空間之外,,這樣的話能夠避免GC。第二個是通過在存儲層保存數(shù)據(jù)的Lineage實現(xiàn)容錯,,這是在Spark中引入的思想,,Lineage記錄了源數(shù)據(jù)以及源數(shù)據(jù)經(jīng)過什么樣的計算得到的當(dāng)前數(shù)據(jù),Tachyon將這些本來是在計算層才關(guān)心的信息放到了存儲層,。Tachyon僅僅保存一份數(shù)據(jù)在內(nèi)存中,,內(nèi)存是很寶貴的資源。而HDFS它為了實現(xiàn)容錯在磁盤上默認保存了三份,,那么如果Tachyon某一個節(jié)點是沒有這份數(shù)據(jù)的時候,,它會通過網(wǎng)絡(luò)去讀。因為在遠端的結(jié)點上數(shù)據(jù)也是在內(nèi)存中間的,,因此遠端讀取沒有磁盤的IO只有網(wǎng)絡(luò)的開銷,,所以說也是很高效的。當(dāng)數(shù)據(jù)丟失的時候,,Tachyon會根據(jù)數(shù)據(jù)的Lineage進行數(shù)據(jù)的恢復(fù),,這個過程有點像Spark中的數(shù)據(jù)重算,但是它比Spark走的更遠,。因為Spark中的重算是在程序運行時的操作,,當(dāng)程序運行的時候發(fā)現(xiàn)某個節(jié)點掛掉了,它會重新計算來管不著數(shù)據(jù),,問題是如果整個Job已經(jīng)結(jié)束之后,,數(shù)據(jù)再發(fā)生丟失就沒有辦法了,Tachyon可以解決這個問題,。因為Tachyon在存儲層存儲了整個數(shù)據(jù)的依賴關(guān)系,,包括了這個數(shù)據(jù)是由什么樣的框架,通過什么樣的執(zhí)行過程生成的,,當(dāng)數(shù)據(jù)丟失的時候Tachyon會重新啟動這些應(yīng)用然后生新成這些數(shù)據(jù),,實現(xiàn)數(shù)據(jù)恢復(fù)。

 

這是Tachyon設(shè)計的目標(biāo),,Tachyon在整個大數(shù)據(jù)處理軟件棧中所處的位置,,最下層是存儲層,,像HDFS、S3,。在上層有Spark,、H2O,Tachyon相當(dāng)于是在存儲層和計算層之間的cache層,,Tachyon并不是要替代任何的存儲系統(tǒng),,它的作用是加快計算層對存儲層的訪問速度。這張是Tachyon的基本架構(gòu),,從這張圖大家可以看到Tachyon和HDFS是很像的,,有Master和Worker。Master用于管理整個集群中間所有數(shù)據(jù)的元數(shù)據(jù),,包括數(shù)據(jù)的大小,、數(shù)據(jù)的位置。Worker用于管理每個節(jié)點上的內(nèi)存數(shù)據(jù),,所有的內(nèi)存數(shù)據(jù)是存儲在Ramdisk上的,,Ramdisk是把一段內(nèi)存空間映射成一個block設(shè)備,Tachyon就可以以內(nèi)存的速度去讀寫文件,。Worker會定期與Master通訊,,把Worker上的數(shù)據(jù)報告給Master,Master會根據(jù)Worker匯報的信息給Worker發(fā)送命令,。在圖的最左邊還有Zookeeper,,它會選擇一個最可用的Master作為主節(jié)點。還有一個模塊在這張圖上沒有的,,那就是Client,。它是提供應(yīng)用程序的編程接口,應(yīng)用程序通過Client向Tachyon中讀寫數(shù)據(jù),。

 

Tachyon中數(shù)據(jù)的容錯有兩種,,一種是元數(shù)據(jù)的容錯,就是Master節(jié)點上的數(shù)據(jù)容錯,,另外一種是內(nèi)存數(shù)據(jù)容錯,,是Worker上的數(shù)據(jù)容錯。元數(shù)據(jù)的容錯和HDFS是很像的,,通過日志實現(xiàn)的,。Image存儲了元數(shù)據(jù),Editlog記錄了最近對元數(shù)據(jù)的修改記錄,。而內(nèi)存數(shù)據(jù)容錯是Tachyon的特有的,,例如:Fileset A通過一個Spark Job生成了Fileset B,F(xiàn)ileset C通過另一個Spark Job生成了Fileset D,同時File set C和File set D又通過一個Mapreduce Job生成了Fileset E,,這樣一個數(shù)據(jù)生成的過程會在Tachyon中被保存下來,,如果Fileset E丟失了,而Fileset B和Fileset D都存在,,那么Tachyon就會重啟Mapreduce job通過Fileset B和Fileset D重新生成Fileset E,如果Fileset B和Fileset E也都不存在了,,那么Tachyon就會重新起用Spark Job生成 FilesetB 和 Fileset D, 最后再啟動Mapreduce Job由FilesetB和Fileset D生成Fileset E,。

  

現(xiàn)在回顧一下我之前講的現(xiàn)有的基于內(nèi)存的計算框架所面臨的三個問題,在有了Tachyon之后這個問題是怎么得到解決的,?數(shù)據(jù)共享問題,,Spark和Hadoop可以通過Tachyon去存儲中間結(jié)果數(shù)據(jù),如果MapReduce需要Spark的輸出結(jié)果,,可以直接讀取Tachyon獲得,,而不需要訪問HDFS。緩存數(shù)據(jù)丟失的問題,,Spark可以將RDD緩存在Tachyon中,,這樣當(dāng)Spark的應(yīng)用Crash的時候這些緩存的數(shù)據(jù)是不會丟失的。第三個是GC的開銷,,這個顯而易見的,,由于數(shù)據(jù)在Tachyon中,GC不會管理這部分數(shù)據(jù),。

  

下面向大家介紹一下Tachyon怎么和現(xiàn)有的大數(shù)據(jù)處理框架集成的,,首先是Mapreduce,MapReduce是沒有和Tachyon做任何集成的,,如果要在MapReduce里面使用Tachyon的話,,就要把Tachyon當(dāng)做外來的包或者是庫來引用。第一種方法是把Tachyon的jar包放在Hadoop的Class path里面,,第二種是放在Hadoop的Lib的目錄里,,第三種是作為應(yīng)用程序的一部分,分發(fā)出去,。另外還需要對Hadoop做一些配置,,需要配置Tachyon文件系統(tǒng),這樣MapReduce就可以直接通過Tachyon加載和寫入數(shù)據(jù),,使用方法和HDFS一樣,。Spark已經(jīng)集成了Tachyon,如果在Spark中間使用Tachyon的話,,只需要對Spark做一些簡單的配置就可以了,,在SparkConf里面配置Tachyon Master的URI,這樣Spark就可以把所有的RDD的數(shù)據(jù)緩存在Tachyon中,通過設(shè)置RDD的Storagelevel為OFF_HEAP,,Spark就會自動的把RDD放在Tachyon里面,。如果Spark要通過Tachyon去加載和寫入數(shù)據(jù)的話,就需要在像在Mapreduce中一樣配置Tachyon的文件系統(tǒng),,這樣的話Spark就可以像讀寫HDFS一樣從Tachyon里面去讀寫數(shù)據(jù),。

  

下面我講一下Tachyon基本的工作原理,首先是它的通訊機制,,Tachyon使用thrift進行通訊,,可以通過配置Master Client和Worker之間的接口自動生成。還有就是Herabeat通訊,,是為了在Tachyon各組件之間保持連接關(guān)系,,Master和Worker也會通過Heartbeeat交換信息,Worker會把自己節(jié)點上最近增加的數(shù)據(jù)或者是數(shù)據(jù)的改變提交給Master,,Master會根據(jù)Worker提供的文件信息去修改Master上的元數(shù)據(jù),,Master也會返回給Worker一些信息。如果Worker提供給Master的文件信息的元數(shù)據(jù)在Master已經(jīng)沒有了,,Master就會告訴Worker刪掉該文件,。如果Worker有一段時間沒有和Master通訊,Master就會認為Worker已經(jīng)和他斷開連接,,當(dāng)Worker又和Master通訊的時候,,Master就會告訴Worker需要重新注冊,把節(jié)點上所有的文件信息重新發(fā)給Master,。Worker也有自檢措施,,如果它檢測到和Master通訊超時,會重新向Master注冊,。Client和Master Worker之間都是有連接的,,Client發(fā)送給Master的Heartbeat,Master暫時沒有處理,。Client和Worker之間的通訊就是為了維持Client和Worker之間的關(guān)系,,如果Worker檢查到Client連接超時,Worker就會釋放掉分配給Client的資源,。

  

Tachyon里文件的組織方式,,首先介紹Worker上的組織方式,Worker有兩種文件系統(tǒng),,一種是Ramdisk,,即內(nèi)存文件系統(tǒng),另一種是底層文件系統(tǒng),,最常用的是HDFS,。在內(nèi)存文件系統(tǒng)里面,,文件是以Block的方式存儲的。在底層文件系統(tǒng)上以整個文件的方式存儲的,。在內(nèi)存文件系統(tǒng)上文件名是BlockID,,而在底層文件系統(tǒng)里文件名是FileID。Tachyon的元數(shù)據(jù)的組織,,大家可以看到這是一個樹狀的結(jié)構(gòu),,每個節(jié)點都是一個Inode,Inode記錄了文件的信息,,所有的文件都從根節(jié)點開始的,,根據(jù)路徑的名字可以一步一步的找到。如果Inode代表一個目錄,,它會記錄自己目錄里面所有的子目錄和文件,如果Inode代表一個文件,,它會記錄這個文件所有的Block,,以及這個文件是不是在底層文件系統(tǒng)上有一個備份,以及備份的文件在的路徑,。

  

應(yīng)用通過Tachyon Client讀寫數(shù)據(jù),,讀數(shù)據(jù)時,Client向Master發(fā)送請求,,從Master獲取要讀取的Block的信息,,包括Block的ID和位置信息,拿到這個信息之后Client首先請求Worker lock該block,,表明該block正在被訪問,,Lock之后Client就會讀取文件,讀取完了之后再要求Worker去unlock這個文件,,最后還要求Worker更新該block的訪問時間,,這是因為在寫數(shù)據(jù)的時候,如果空間不足Worker會根據(jù)訪問時間做基于LRU的文件刪除操作,。如果這個文件并沒有在本地Worker上,,Client就會去Remote Worker上去讀,Remote Worker在接受到請求之后會以通過網(wǎng)絡(luò)將數(shù)據(jù)傳回給Client,。

  

Tachyon在讀取數(shù)據(jù)的時候有兩種讀取方式,,第一種是CACHE的方式,意思是說如果本地有數(shù)據(jù)那么直接讀取,,如果本地沒有數(shù)據(jù)從遠程讀數(shù)取時,,讀完之后會在本地創(chuàng)建一個緩存的副本。這個策略的目的是說,,用戶認為數(shù)據(jù)會在接下來還會反復(fù)被使用,,與其說從遠程反復(fù)去讀取數(shù)據(jù)還不如直接在本地創(chuàng)建一個副本,以節(jié)省開銷,如果是從底層文件系統(tǒng)讀呢,?CACHE策略也會在本地的內(nèi)存中創(chuàng)建一個副本,,而No-cache的策略是只讀一次,用戶認為接下來不會再去訪問這個文件了,。

  

寫文件時,,Client向worker申請內(nèi)存空間,Worker首先判斷自己的內(nèi)存空間還夠不夠,,如果不夠的話它就會根據(jù)某種特定的算法,,在當(dāng)前是LRU的算法,將最近沒有被訪問的block文件直接的刪除掉,,釋放空間,。在分配好內(nèi)存之后就會告訴給Client分配成功,Client就會要將他要的數(shù)據(jù)寫進本地的Ramdisk,。Client寫完之后會通知Worker去cache這個文件,,cache的過程是從把數(shù)據(jù)從用戶目錄移動到數(shù)據(jù)目錄,而Worker在cache完之后會發(fā)給Master新的block文件的信息,。在寫入方面也是有多種策略的,,首先有一個MUST-CACHE,Client要求必須把文件寫在內(nèi)存中間,,如果內(nèi)存不夠沒辦法寫的話,,Tachyon就會報錯。而TRY-CACHE就是說盡可能的把數(shù)據(jù)寫進內(nèi)存中,。而THROUGH是直接把文件寫進底層的文件系統(tǒng),,不會寫內(nèi)存。而CACH而-THROUGH就是會保存兩個拷貝,,而ASYNC-THROUGH就是將文件寫進本地內(nèi)存直接就保存了,,Tachyon從內(nèi)存?zhèn)浞莸降妆P文件當(dāng)中。前2種策略是對讀做了優(yōu)化,,如果這個文件只是一個臨時文件不需要做永久的存儲,,而且它在寫之后可能馬上會被讀取甚至是反復(fù)的讀取,要把它放在內(nèi)存中間,,并且由于它是一個臨時文件不需要在底層文件做永久的存儲,。而THROUGH是只在底層的文件系統(tǒng)寫入這個文件,如果這個文件是一個應(yīng)用的輸出結(jié)果,,而且在寫入之后在短時間之內(nèi)是不會被訪問的,,那么就把這個文件直接寫入到Tachyon管理的底層文件系統(tǒng)的空間中。如果這個結(jié)果在將來被使用的話,,那可以根據(jù)用戶的需要把文件新放進Tachyon的內(nèi)存中實現(xiàn)快速的訪問,。而CACHE-THROUGH就兼顧了上面的兩種,,而異步的THROUGH不保證存儲到底層文件系統(tǒng),它是為了提高響應(yīng)的時間,、減少延遲,,但是它和CACHE-THROUGH的最終效果是一樣的。

  

Tachyon的用戶接口,,Tachyon提供了兩種用戶接口,,第一種接口是命令行。這和HDFS的命令行接口很像,,提供一些基本的文件系統(tǒng)操作命令,,像cat、ls,、mkdir,、rm等,是為了方便用戶對Tachyon內(nèi)存中間的文件做一些最基本的操作,。第二種接口是編程接口,,在Tachyon中主要有兩個為用戶程序提供服務(wù)的接口,一個是TachyonFS,,這是Tachyon提供的最基本的編程接口,這里面涵蓋了所有Tachyon提供給用戶程序的功能,,其中包括像delete,、mkdir、rename等,,通過對這些基本的功能編程,,可以實現(xiàn)文件系統(tǒng)的操作。另一個是TachyonFile,,提供了一些更上層的接口,。比如說獲取一個文件的InStream 或者 OutStream。

  

我們在Tachyon上的使用經(jīng)驗,,第一個是我們團隊自己開發(fā)的日志數(shù)據(jù)處理的原型系統(tǒng),。在github上可以找到這個項目,它的名字叫Thunderain,。流式的數(shù)據(jù)首先會被放在Kafka里面,,它是一個消息隊列,在Kafka里面的數(shù)據(jù)經(jīng)過SparkStraming處理后會被寫進Tachyon的In-memory Tables里面,,因為這些數(shù)據(jù)是存儲在In Memory Table里面,,它的訪問數(shù)據(jù)是很快的,所以可以支持在后臺運行一些在線的分析或者是交互式的查詢,,對響應(yīng)時間延遲比較敏感的應(yīng)用,。圖下方的處理流程,,Kafka中的數(shù)據(jù)還可以通過ETL的處理保存在HDFS里面,這些數(shù)據(jù)可以作為歷史的數(shù)據(jù),,歷史數(shù)據(jù)和Tachyon 內(nèi)存數(shù)據(jù)可以做組合的查詢,。比如說一個視頻網(wǎng)站,用戶對視頻點擊的日志可以通過上面的流式處理,,后臺的應(yīng)用人員就可以很快速的會去查詢到,,在最近的這段時間里面什么視頻被播放的次數(shù)最多,哪些視頻是最熱門的,,而歷史數(shù)據(jù)的作用是,,在線數(shù)據(jù)可以和歷史數(shù)據(jù)做一個對比,就是說在前一天或者是上一個小時,,什么視頻是最熱的,。

 

另外一個Tachyon應(yīng)用實例是OffHeap的存儲,這是我們做過國內(nèi)某視頻網(wǎng)站的case,,這個case的目的是做視頻內(nèi)容的推薦,,這是一個圖算法N度級聯(lián)的問題。N度級聯(lián)的意思是計算一個圖中2個節(jié)點之間跳躍N次,,經(jīng)過N次的條約他們之間相關(guān)度是多少,,就是說有N距離的相關(guān)度是多少,它的算法在這里,。它的算法大概是這個意思,,假定兩個節(jié)點之間有M條長度都是N的路徑,那么Weightk(X,、Y)表示第K條路徑的權(quán)重,?N度級聯(lián)要求的就是所有的M條路徑的權(quán)重的合,每一條路徑的權(quán)重等于整個路徑上所有邊的權(quán)重級,,因為每條邊的權(quán)重都是一個0到1之間的數(shù),,權(quán)重積必定也是0到1的浮點數(shù),而且隨著N的增大他們的相關(guān)度是減小的,。在現(xiàn)實當(dāng)中這個是可以在社交網(wǎng)絡(luò)里面計算不同用戶的相關(guān)性,,電商網(wǎng)站的產(chǎn)品推薦等。在解決這個問題的時候,,我們用了兩種圖的框架實現(xiàn)的,,一種是bagel一種是Graphx。首先我講一講Bagel的實現(xiàn),, Spark在實現(xiàn)Bagel的時候,,把每個superStep中生成的節(jié)點的新的數(shù)據(jù)和該節(jié)點發(fā)送給下一個superstep的各個節(jié)點的的消息都放在了Spark的RDD中,我們發(fā)現(xiàn)隨著迭代次數(shù)的增加,,GC的開銷是相當(dāng)大的,,因為數(shù)據(jù)量是很大的,,每次迭代都會把這個數(shù)據(jù)cache起來。我們的解決方法就是用Tachyon去緩存了這一部分的數(shù)據(jù),,相當(dāng)于讓Bagel運行在Tachyon上,,這樣的好處是能夠解決大量GC的問題。第二種實現(xiàn)是GraphX,,它的計算過程是這樣子的,,首先是收集階段,它會收集每個節(jié)點和邊的數(shù)據(jù),,然后生成發(fā)送給各個節(jié)點的消息,,在計算階段每個節(jié)點會根據(jù)收到的消息生成新的節(jié)點數(shù)據(jù),在這一步就相當(dāng)于是從一個舊的圖生成了一個新的圖,。在這個階段Spark其實也是把這一部分的數(shù)據(jù)給緩存起來了,,我們在使用的時候也是把這個數(shù)據(jù)緩存在Tachyon上,然后緩解GC的問題,。

 

第三個用戶的case是遠程數(shù)據(jù)訪問,,用戶有多個集群,其中有一個集群是專門提供存儲服務(wù)的,,還有若干個計算集群,,在這些集群上有可能運行的Spark或者Mapreduce。他們有這樣的需求,,在某個計算集群上,,應(yīng)用需要多次的去訪問提供存儲服務(wù)集群上的數(shù)據(jù),這個開銷是很大的,,相當(dāng)于在兩個集群間做數(shù)據(jù)的讀取。我們提供的解決方案就是使用Tachyon,,應(yīng)用只需要從遠程提供存儲服務(wù)的集群上讀取一次數(shù)據(jù),,把數(shù)據(jù)緩存在本地Tachyon上,然后在Tachyon上對數(shù)據(jù)做反復(fù)的訪問和計算,,這樣的話就可以節(jié)省大量的數(shù)據(jù)讀取的開銷,。

  

Tachyon適用的場景,第一個場景計算中間結(jié)果需要在不同的應(yīng)用和計算框架中間共享的時候,,也就是說中間結(jié)果有可能會被不同的后臺應(yīng)用所使用,。第二個場景是需要快速響應(yīng)對延遲比較敏感,比如后臺的用戶有可能會做一些在線的查詢,,或者是一些交互式查詢的時候,,使用Tachyon其實可以起到提高響應(yīng)和降低延遲的效果。第三個是內(nèi)存數(shù)據(jù)量比較大,,并且擁有長時間和迭代式的計算需求,,我們之前做過一個用戶的case里面使用了Tachyon之后,,在性能上也提高了30%以上。第四個場景是需要多次訪問大量的遠程數(shù)據(jù),,Tachyon的作用就是可以把遠程的數(shù)據(jù)放在本地做多次的訪問,,這樣可以減少遠程訪問的開銷。但是Tachyon也是有局限的,,第一個局限是CPU的負載會增加,,因為Tachyon中數(shù)據(jù)是以文件的方式存的,那么就會有序列化和反序列化的開銷,,這是一個很消耗CPU的工作,。第二個局限是Tachyon暫時只能使用內(nèi)存做存儲空間,這個局限在接下來的版本就不會存在了,,因為我們現(xiàn)在正在用其他的高速存儲器像SSD去擴展Tachyon的存儲空間,。

  

Tachyon當(dāng)前的發(fā)展?fàn)顩r,Tachyon是一個很新的項目,,是2012年的夏天開始的,,有5個發(fā)起者,最左邊的是李浩源,,他是Tachyon的作者,,是個中國人,現(xiàn)在UC Berkeley讀博士,。Tachyon的現(xiàn)在最新的發(fā)行版本是0.5.0,,主分支版本是0.6-SNAPSHOT,Tachyon在國內(nèi)還很少有公司使用,,國外已經(jīng)有50多家公司在嘗試使用了?,F(xiàn)有的Spark和MapReduce的程序可以不經(jīng)過修改直接在Tachyon上運行,Spark將Tachyon作為默認的Offheap的存儲系統(tǒng),,上面的這些是對Tachyon有貢獻的一些組織,,在國內(nèi)有兩所大學(xué)在做Tachyon方面的工作,南京大學(xué)和清華大學(xué),。

 

最后講講英特爾的貢獻,,我們有3位貢獻者,一共有100多個提交,,這些提交里面,,我們做了重要的功能組件,也做了提高可用性和易用性的工作,,還有一些BUG的修補,,接下來我向大家介紹我們做的一個功能組件:多層級的本地存儲。它解決的問題就是我剛剛提到的,,Tachyon現(xiàn)在只能使用內(nèi)存作為它的存儲空間,。我們使用SSD,、HDD去擴展Tachyon的存儲空間,整個存儲結(jié)構(gòu)是一個金字塔的結(jié)構(gòu),,最上層空間比較小但是速度很快,,中間層和下層是速度慢一點但是空間很大,我們通過設(shè)計一些策略,,將最熱的數(shù)據(jù)放在最頂層,,達到比較快的訪問速度,暫時不太熱的數(shù)據(jù)放在SSD或HDD上,,當(dāng)數(shù)據(jù)將來再次變熱的時候可以重新把它給放回內(nèi)存中間,。這樣的好處是當(dāng)內(nèi)存不夠的時候可以把數(shù)據(jù)放在SSD或HDD,而不是將數(shù)據(jù)丟掉,,同時對性能沒有太大的影響,。

 

最后希望大家能夠嘗試著使用Tachyon,因為從我了解的情況來看,,國內(nèi)的公司用Tachyon的很少,,也希望大家能夠加入Tachyon的社區(qū),Tachyon的項目發(fā)布在github上,,大家在使用的時候發(fā)現(xiàn)有任何的問題可以給我們提一些意見,。

 

PPT:http://qiniuppt./shimingfei.pdf

視頻:http://qiniu-opensource./ecug-2014-shimingfei.mp4

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多