一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法
【專利摘要】本發(fā)明公開了一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法,其包括三個大的步驟:步驟一、數(shù)據(jù)本地化處理的任務(wù)調(diào)度;步驟二、數(shù)據(jù)在本地內(nèi)存的局部性訪問;步驟三、本地內(nèi)存數(shù)據(jù)的重復(fù)利用。本發(fā)明所提出的方法能夠提高數(shù)據(jù)命中率,減少數(shù)據(jù)傳輸量,提升MapReduce的執(zhí)行效率。
【專利說明】一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲領(lǐng)域,尤其涉及到一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法。
【背景技術(shù)】
[0002]Apache Hadoop (—般簡稱為Hadoop)是一個開源的分布式數(shù)據(jù)處理平臺,它主要包括分布式文件處理系統(tǒng)(Hadoop Distributed File System,HDFS)和MapReduce計算模型。
[0003]Apache Hadoop是一款支持數(shù)據(jù)密集型分布式應(yīng)用并以Apache2.0許可協(xié)議發(fā)布的開源軟件框架。它支持在商品硬件構(gòu)建的大型集群上運行的應(yīng)用程序。Hadoop是根據(jù)Google公司發(fā)表的MapReduce和Google檔案系統(tǒng)的論文自行實作而成。
[0004]Hadoop框架透明地為應(yīng)用提供可靠性和數(shù)據(jù)移動。它實現(xiàn)了名為MapReduce的編程范式:應(yīng)用程序被分割成許多小部分,而每個部分都能在集群中的任意節(jié)點上執(zhí)行或重新執(zhí)行。此外,Hadoop還提供了分布式文件系統(tǒng),用以存儲所有計算節(jié)點的數(shù)據(jù),這為整個集群帶來了非常高的帶寬。MapReduce和分布式文件系統(tǒng)的設(shè)計,使得整個框架能夠自動處理節(jié)點故障。它使應(yīng)用程序與成千上萬的獨立計算的電腦和PB級的數(shù)據(jù)。現(xiàn)在普遍認為整個Apache Hadoop “平臺”包括Hadoop內(nèi)核、MapReduce、Hadoop分布式文件系統(tǒng)(HDFS)以及一些相關(guān)項目,有Apache Hive和Apache HBase等等。
[0005]HDFS能很好地滿足大規(guī)模數(shù)據(jù)的存儲需求,然而,它在處理實時數(shù)據(jù)讀取方面存在許多不足。由于執(zhí)行MapReduce任務(wù)的過程中涉及到大量的數(shù)據(jù)讀取,會對網(wǎng)絡(luò)傳輸和I/O (Input/Output)帶寬造成巨大壓力,所以要在HDFS的基礎(chǔ)上設(shè)置緩存系統(tǒng),減少數(shù)據(jù)傳輸量,以提高MapReduce的執(zhí)行效率。
[0006]MapReduce將數(shù)據(jù)計算過程分為兩個階段:Map和Reduce,對應(yīng)于兩個處理函數(shù)mapper和reducer。在Map階段,原始數(shù)據(jù)被輸入mapper進行過濾和轉(zhuǎn)換,獲得的中間數(shù)據(jù)結(jié)果作為reducer的輸入,得到最后的處理結(jié)果。在整個MapReduce的處理過程中,從HDFS中讀取原始數(shù)據(jù)所花費的時間最長,因此,要想提高MapReduce的執(zhí)行效率,需要從原始數(shù)據(jù)的讀取入手。通過設(shè)置相應(yīng)的緩存機制,提高數(shù)據(jù)命中率,使Map階段原始數(shù)據(jù)的讀取時間降低。
[0007]Memcached和RAMCloud (內(nèi)存云)是兩個典型的內(nèi)存級緩存系。Memcached是在基于磁盤存儲的海量數(shù)據(jù)中為后端提供相對集中的、非協(xié)作的、對用戶非透明的數(shù)據(jù)緩存服務(wù)。RAMCloud則是使用分布式共享內(nèi)存替代磁盤完成數(shù)據(jù)存儲和管理,并提出了緩存數(shù)據(jù)基于多磁盤分散備份,并行快速修復(fù)的思想。
[0008]兩者本質(zhì)上都還是面向磁盤數(shù)據(jù)相對集中存放、計算資源與存儲資源分離的架構(gòu),因此難以直接適用于MapReduce平臺;同時由于支持的應(yīng)用類型差異,二者均未考慮由于MapReduce應(yīng)用數(shù)據(jù)本地化處理的特征。
[0009]基于時間局部性的緩存替換策略LAC(Locality_Aware Cooperative Caching,位置感知協(xié)作緩存)通過同一數(shù)據(jù)塊的兩次訪問之間所間隔的其他數(shù)據(jù)塊的訪問次數(shù)來量化數(shù)據(jù)訪問的時間局部性。將數(shù)據(jù)塊的傳輸代價、數(shù)據(jù)塊的大小以及數(shù)據(jù)塊的最近訪問時間等因素構(gòu)建緩存替換代價模型。
[0010]這些機制均面向傳統(tǒng)數(shù)據(jù)中心平臺架構(gòu),然而在Map/Reduce平臺計算資源與存儲資源的緊耦合部署和數(shù)據(jù)本地化處理的特征,使得基于數(shù)據(jù)塊級的數(shù)據(jù)訪問特征統(tǒng)計結(jié)果受到計算資源分配策略及實時負載的干擾,難以完整真實的反映數(shù)據(jù)訪問特征。
[0011]針對MapReduce任務(wù)執(zhí)行過程中需要讀取大量的數(shù)據(jù),對網(wǎng)絡(luò)傳輸和I/O帶寬造成巨大壓力,現(xiàn)有技術(shù)中上沒有很好的解決方法。
【發(fā)明內(nèi)容】
[0012]為解決上述技術(shù)問題,本發(fā)明采用了如下技術(shù)方案:
[0013]—種基于Hadoop分布式文件系統(tǒng)的三級緩存方法,采用Apache Hadoop實現(xiàn),其方法如下:
[0014]步驟一、數(shù)據(jù)本地化處理的任務(wù)調(diào)度,又包含下列子步驟:
[0015]第I步、用戶向Jobtrack提交作業(yè)請求,Jobtrack獲取Job所要讀取的數(shù)據(jù)范圍以及把作業(yè)分解成若干個Map任務(wù)和Reduce任務(wù);
[0016]第2步、Jobtrack根據(jù)每個Map任務(wù)所要讀取的數(shù)據(jù),通過訪問NameNode的元數(shù)據(jù)來獲取存放這些數(shù)據(jù)的DataNode位置;
[0017]第3步、空閑的Tasktrack節(jié)點定時向Jobtrack匯報自己的情況,Jobtrack從這些空閑的Tasktrack節(jié)點中選擇有目標(biāo)數(shù)據(jù)的DataNode,并將相應(yīng)的Map任務(wù)分配到該節(jié)占中.
[0018]步驟二、數(shù)據(jù)在本地內(nèi)存的局部性訪問,又包含如下子步驟:
[0019]第I步、將服務(wù)器的內(nèi)存空間分成大小相等的若干存儲區(qū)域,每一塊區(qū)域稱之為頁框;
[0020]第2步、每一頁是最基本的內(nèi)存分配。在每一頁的底部預(yù)留字節(jié)來存放指向下一頁的地址或者表示該數(shù)據(jù)塊已結(jié)束。每個數(shù)據(jù)塊在內(nèi)存中表示為一串頁的鏈表。
[0021]第3步、內(nèi)存中維護一張數(shù)據(jù)塊調(diào)入信息表,當(dāng)內(nèi)存中的數(shù)據(jù)塊達到了存儲空間的上限,新的數(shù)據(jù)塊需要調(diào)入時,使用最近最久未使用置換算法來執(zhí)行數(shù)據(jù)塊的替換?’另夕卜,內(nèi)存中還維護一張存儲頁面表的位示圖。
[0022]步驟三、本地內(nèi)存數(shù)據(jù)的重復(fù)利用
[0023]第I步、在Master服務(wù)器中維護一張全局緩存信息管理表,負責(zé)記錄每個Slave節(jié)點的緩存信息以及該節(jié)點是否有足夠的Slot資源。每個Slave服務(wù)器定時向Master服務(wù)器發(fā)送信息,匯報自己的緩存信息和Slot資源信息。
[0024]第2步、當(dāng)Jobtrack進行任務(wù)調(diào)度時,首先檢查全局緩存信息表,如果發(fā)現(xiàn)緩存中有Map任務(wù)所需的數(shù)據(jù),則優(yōu)先分配該任務(wù)。倘若沒有則遵循數(shù)據(jù)本地化處理的調(diào)度策略。
[0025]步驟二中第I步中的葉框大小為64k。
[0026]步驟二中第2步中字節(jié)數(shù)為4。
[0027]步驟二中第3步最近最久未使用置換算法為選擇最近一段時間內(nèi)最長時間內(nèi)沒有被訪問過的數(shù)據(jù)塊進行置換。
[0028]步驟二中第3步數(shù)據(jù)塊調(diào)入信息表要記錄的內(nèi)容有數(shù)據(jù)塊序號、數(shù)據(jù)塊起始頁框號、數(shù)據(jù)塊訪問時間。
[0029]步驟二中第3步內(nèi)存中還維護一張存儲頁面表的位示圖,其方法為在內(nèi)存中劃分一塊固定存儲區(qū)域,每個內(nèi)存單元的每個比特代表一個頁面,如果該頁面被分配,則對應(yīng)的比特位置1,否則置0,以確定內(nèi)存中是否存在空閑單元。
[0030]本發(fā)明所提出的基于HDFS的三級緩存機制能夠提高數(shù)據(jù)命中率,減少數(shù)據(jù)傳輸量,提升MapReduce的執(zhí)行效率。
【專利附圖】
【附圖說明】
[0031 ] 圖1基于HDFS的三級緩存架構(gòu)圖。
【具體實施方式】
[0032]本發(fā)明所提出的三級緩存機制是運行于Hadoop平臺的分布式文件系統(tǒng)HDFS,包括三個層次,如圖1所示:1、數(shù)據(jù)本地化處理的任務(wù)調(diào)度;2、數(shù)據(jù)在本地內(nèi)存的局部性訪問;3、本地內(nèi)存數(shù)據(jù)的重復(fù)利用。
[0033]一般情況下,HDFS包含一個NameNode部署在主服務(wù)器上大量DataNode部署在從服務(wù)器上NameNode負責(zé)管理用戶文件的元數(shù)據(jù)信息。元數(shù)據(jù)由三部分組成,分別是文件系統(tǒng)目錄樹信息、文件和文件所拆分的數(shù)據(jù)塊的對應(yīng)關(guān)系、數(shù)據(jù)塊在DataNode上的分布位置信息。存儲在HDFS的文件被拆成同樣大小的數(shù)據(jù)塊(通常是64MB),這些數(shù)據(jù)塊將會復(fù)制存儲到多個數(shù)據(jù)存儲服務(wù)器中。每個數(shù)據(jù)存儲服務(wù)器在本地磁盤上用Linux文件系統(tǒng)保存這些塊,并且對數(shù)據(jù)塊進行讀寫。
[0034]MapReduce計算模式是一種標(biāo)準的函數(shù)式編程模式。客戶端用戶通過編程實現(xiàn)對文件的操作。每個用戶程序可以看做是一個作業(yè),而作業(yè)將會由Jobtrack(作業(yè)調(diào)度)分解成若干個Map和Reduce任務(wù)。Map任務(wù)從HDFS中讀數(shù)據(jù),Reduce任務(wù)處理好的數(shù)據(jù)寫入HDFS,所以本發(fā)明所提出的三級緩存系統(tǒng)主要服務(wù)于Map任務(wù),保證Map能在最短的時間內(nèi)找到想要的數(shù)據(jù)。
[0035]步驟一:數(shù)據(jù)本地化處理的任務(wù)調(diào)度
[0036]由于HDFS是一個Master/Slave結(jié)構(gòu)(主從結(jié)構(gòu)),因而可以將NameNode (名字節(jié)點)和Jobtrack部署在Master服務(wù)器(主服務(wù)器)中,DataNode (數(shù)據(jù)節(jié)點)和Tasktrack(任務(wù)調(diào)度)部署在Slave服務(wù)器從服務(wù)器中。假如Map任務(wù)所要處理的數(shù)據(jù)恰好保存在本地服務(wù)器上,那么Map任務(wù)可以直接從本地磁盤中讀取數(shù)據(jù),減少數(shù)據(jù)在網(wǎng)絡(luò)中傳輸時間。當(dāng)Jobtrack進行任務(wù)調(diào)度時,優(yōu)先將Map任務(wù)分配給包含該任務(wù)所要處理數(shù)據(jù)塊的DataNode上。為了實現(xiàn)這一目的,split分片大小與數(shù)據(jù)塊大小一致,因此在InputSplit元數(shù)據(jù)信息中,host列表上只包含一個節(jié)點,能完全實現(xiàn)數(shù)據(jù)本地化處理。
[0037]以數(shù)據(jù)本地化處理為導(dǎo)向的任務(wù)調(diào)度過程如下:
[0038]1、用戶編寫MapReduce程序創(chuàng)建新的JobClient實例,向Jobtrack提交作業(yè)請求。Jobtrack收到一個Job Client請求,并做應(yīng)答。然后獲取Job所要讀取的數(shù)據(jù)范圍以及把作業(yè)分解成若干個Map任務(wù)和Reduce任務(wù),每個Map任務(wù)處理相應(yīng)的部分數(shù)據(jù),為一個split大小。
[0039]2、Jobtrack根據(jù)每個Map任務(wù)所要讀取的數(shù)據(jù),通過訪問NameNode的元數(shù)據(jù)來獲取存放這些數(shù)據(jù)的DataNode位置,包括備份的數(shù)據(jù)節(jié)點位置。
[0040]3、空閑的Tasktrack節(jié)點定時向Jobtrack匯報自己的情況,Jobtrack從這些空閑的Tasktrack節(jié)點中選擇有目標(biāo)數(shù)據(jù)的DataNode,并將相應(yīng)的Map任務(wù)分配到該節(jié)點中。
[0041]步驟二:數(shù)據(jù)在本地內(nèi)存的局部性訪問
[0042]顯然,磁盤的讀取速率遠遠跟不上CPU的處理速率,所以設(shè)置內(nèi)存緩沖區(qū)來平衡兩者的差距。將磁盤內(nèi)的部分數(shù)據(jù)預(yù)先讀取到內(nèi)存中,當(dāng)CPU遇到讀取數(shù)據(jù)的指令時,直接從內(nèi)存中獲得相應(yīng)的數(shù)據(jù)。這樣可以減少Map任務(wù)從本地磁盤讀取數(shù)據(jù)的時間,本發(fā)明所提出的內(nèi)存級數(shù)據(jù)緩存調(diào)度是以局部性訪問為基礎(chǔ)。雖然兩個Map任務(wù)之間是獨立的,但是Map任務(wù)是從用戶程序中分解出來的,所以前后之間滿足局部性訪問原理,可以將數(shù)據(jù)預(yù)先調(diào)入內(nèi)存或者上次被讀取的數(shù)據(jù)不要馬上調(diào)出內(nèi)存,在下一個Map任務(wù)到來之時,便可以直接讀取數(shù)據(jù)。
[0043]以局部性訪問為基礎(chǔ)的內(nèi)存級數(shù)據(jù)緩存調(diào)度過程如下:
[0044]1、將服務(wù)器的內(nèi)存空間分成大小相等的若干存儲區(qū)域,每一塊區(qū)域稱之為頁框,頁框大小為64K,由于HDFS中每個數(shù)據(jù)塊的大小為64MB,所以一個數(shù)據(jù)塊所需的頁框數(shù)為1024個。頁框在內(nèi)存中從O開始連續(xù)編號。
[0045]2、每一頁是最基本的內(nèi)存分配。在每一頁的底部預(yù)留4個字節(jié)來存放指向下一頁的地址或者表示該數(shù)據(jù)塊已結(jié)束。每個數(shù)據(jù)塊在內(nèi)存中表示為一串頁的鏈表。
[0046]3、為了方便從內(nèi)存中找到所需的數(shù)據(jù)塊,從服務(wù)器的內(nèi)存中維護一張數(shù)據(jù)塊調(diào)入信息表,顯示哪些數(shù)據(jù)塊調(diào)入內(nèi)存,在內(nèi)存中的存儲位置以及什么時候調(diào)入內(nèi)存,因此該信息表中要記錄的選項有:數(shù)據(jù)塊序號、數(shù)據(jù)塊起始頁框號、數(shù)據(jù)塊訪問時間。當(dāng)內(nèi)存中的數(shù)據(jù)塊達到了存儲空間的上限,新的數(shù)據(jù)塊需要調(diào)入時,使用最近最久未使用置換算法(Least Recently Used, LRU)來執(zhí)行數(shù)據(jù)塊的替換,即選擇最近一段時間內(nèi)最長時間內(nèi)沒有被訪問過的數(shù)據(jù)塊進行置換,因為訪問局部性原理認為在過去一段時間內(nèi)不曾被訪問過的數(shù)據(jù)塊,在最近的將來也不會被訪問,所以數(shù)據(jù)塊信息表中需要記錄數(shù)據(jù)塊的調(diào)入時間,是為執(zhí)行LRU算法準備的另外,內(nèi)存中還維護一張存儲頁面表的位示圖,在內(nèi)存中劃分一塊固定存儲區(qū)域,每個內(nèi)存單元的每個比特代表一個頁面,如果該頁面被分配,則對應(yīng)的比特位置1,否則置0,以確定內(nèi)存中是否存在空閑單元,位示圖的作用是為了指出內(nèi)存中各頁面是否已被分配出去,以及為分配頁面的總數(shù)。前面也提到了,為了方便內(nèi)存的管理,將內(nèi)存空間分成大小相同的若干頁框,數(shù)據(jù)塊調(diào)入內(nèi)存中,必然要分配部分頁來存儲,那么為了管理頁框的分配,所以用位示圖來表示每一頁的分配情況,分配了置“1”,沒分配置“O”。下一次要調(diào)入數(shù)據(jù)塊時,首先要查看位示圖,看是否有足夠的頁框供數(shù)據(jù)塊調(diào)入,假如不夠則要執(zhí)行LRU算法,把之前的數(shù)據(jù)塊調(diào)出內(nèi)存,空出頁框,供后面的數(shù)據(jù)塊調(diào)入。
[0047]4、假設(shè)內(nèi)存空間大小為8GB,預(yù)留2GB的空間作為其他用途,那么真正可以用來做內(nèi)存緩存的空間大小為6GB。HDFS每個數(shù)據(jù)塊的大小為64MB,所以內(nèi)存緩存中一次性能調(diào)入數(shù)據(jù)塊有96個數(shù)據(jù)塊,所以數(shù)據(jù)塊調(diào)入信息表不會很大。
[0048]步驟三:本地內(nèi)存數(shù)據(jù)的重復(fù)利用
[0049]Map任務(wù)執(zhí)行結(jié)束后,它所讀取的數(shù)據(jù)會保留在內(nèi)存中。當(dāng)下一個Map任務(wù)分配到該DataNode時,為了避免內(nèi)存替換所花費的不必要時間,Jobtrack在下一輪分配任務(wù)時應(yīng)優(yōu)先考慮節(jié)點內(nèi)存中的數(shù)據(jù)與Map任務(wù)所需處理數(shù)據(jù)的匹配情況。所以本發(fā)明提出以內(nèi)存數(shù)據(jù)重復(fù)利用為驅(qū)動的任務(wù)調(diào)度。
[0050]以內(nèi)存數(shù)據(jù)重復(fù)利用為驅(qū)動的任務(wù)調(diào)度過程:
[0051]1、在Master服務(wù)器中維護一張全局緩存信息管理表,負責(zé)記錄每個Slave節(jié)點的緩存信息以及該節(jié)點是否有足夠的Slot資源。每個Slave服務(wù)器定時向Master服務(wù)器發(fā)送信息,匯報自己的緩存信息和Slot資源信息,TaskTracker使用slot表示在本節(jié)點上等量劃分的資源量。slot代表計算資源(CPU、內(nèi)存等)。一個Map Task獲取到一個slot后才有機會運行。
[0052]2、當(dāng)Jobtrack進行任務(wù)調(diào)度時,首先檢查全局緩存信息表,如果發(fā)現(xiàn)緩存中有Map任務(wù)所需的數(shù)據(jù),則優(yōu)先分配該任務(wù)。倘若沒有則遵循數(shù)據(jù)本地化處理的調(diào)度策略。
[0053]所以,根據(jù)本發(fā)明所提出的基于HDFS的三級緩存機制,Jobtrack在任務(wù)調(diào)度和數(shù)據(jù)加載時遵循如下過程Jobtrack分配Map任務(wù)時,先檢查全局緩存信息表,優(yōu)先把任務(wù)分配給內(nèi)存中調(diào)入目標(biāo)數(shù)據(jù)塊的節(jié)點;然后根據(jù)數(shù)據(jù)本地化處理的策略,將剩余的Map任務(wù)分配到保存目標(biāo)數(shù)據(jù)塊的節(jié)點中,執(zhí)行Map任務(wù)時要把所需讀取的數(shù)據(jù)塊加載到內(nèi)存中,內(nèi)存替換遵循以局部性訪問為基礎(chǔ)的內(nèi)存級數(shù)據(jù)緩存調(diào)度。
[0054]本發(fā)明基于HFDS的三級緩存機制,包含以數(shù)據(jù)本地化處理為導(dǎo)向的任務(wù)調(diào)度、以局部性訪問為基礎(chǔ)的內(nèi)存級數(shù)據(jù)緩存調(diào)度、以內(nèi)存數(shù)據(jù)重復(fù)利用為驅(qū)動的任務(wù)調(diào)度。以局部性訪問為基礎(chǔ)的內(nèi)存級數(shù)據(jù)緩存調(diào)度過程,數(shù)據(jù)塊調(diào)入內(nèi)存中是按頁存儲,每個數(shù)據(jù)塊在內(nèi)存中表示為一串頁的鏈表,易于內(nèi)存空間的回收利用。通過數(shù)據(jù)塊調(diào)入信息表進行內(nèi)存替換。
【權(quán)利要求】
1.一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法,采用Apache Hadoop實現(xiàn),其方法如下: 步驟一、數(shù)據(jù)本地化處理的任務(wù)調(diào)度,又包含下列子步驟: 第I步、用戶向Jobtrack提交作業(yè)請求,Jobtrack獲取Job所要讀取的數(shù)據(jù)范圍以及把作業(yè)分解成若干個Map任務(wù)和Reduce任務(wù); 第2步、Jobtrack根據(jù)每個Map任務(wù)所要讀取的數(shù)據(jù),通過訪問NameNode的元數(shù)據(jù)來獲取存放這些數(shù)據(jù)的DataNode位置; 第3步、空閑的Tasktrack節(jié)點定時向Jobtrack匯報自己的情況,Jobtrack從這些空閑的Tasktrack節(jié)點中選擇有目標(biāo)數(shù)據(jù)的DataNode,并將相應(yīng)的Map任務(wù)分配到該節(jié)點中; 步驟二、數(shù)據(jù)在本地內(nèi)存的局部性訪問,又包含如下子步驟: 第I步、將服務(wù)器的內(nèi)存空間分成大小相等的若干存儲區(qū)域,每一塊區(qū)域稱之為頁框; 第2步、每一頁是最基本的內(nèi)存分配,在每一頁的底部預(yù)留字節(jié)來存放指向下一頁的地址或者表示該數(shù)據(jù)塊已結(jié)束,每個數(shù)據(jù)塊在內(nèi)存中表示為一串頁的鏈表; 第3步、內(nèi)存中維護一張數(shù)據(jù)塊調(diào)入信息表,當(dāng)內(nèi)存中的數(shù)據(jù)塊達到了存儲空間的上限,新的數(shù)據(jù)塊需要調(diào)入時,使用最近最久未使用置換算法來執(zhí)行數(shù)據(jù)塊的替換;另外,內(nèi)存中還維護一張存儲頁面表的位示圖; 步驟三、本地內(nèi)存數(shù)據(jù)的重復(fù)利用: 第I步、在Master服務(wù)器中維護一張全局緩存信息管理表,負責(zé)記錄每個Slave節(jié)點的緩存信息以及該節(jié)點是否有足夠的Slot資源,每個Slave服務(wù)器定時向Master服務(wù)器發(fā)送信息,匯報自己的緩存信息和Slot資源信息; 第2步、當(dāng)Jobtrack進行任務(wù)調(diào)度時,首先檢查全局緩存信息表,如果發(fā)現(xiàn)緩存中有Map任務(wù)所需的數(shù)據(jù),則優(yōu)先分配該任務(wù),倘若沒有則遵循數(shù)據(jù)本地化處理的調(diào)度策略。
2.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法,其步驟二中第I步中的葉框大小為64k。
3.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法,其步驟二中第2步中字節(jié)數(shù)為4。
4.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法,其步驟二中第3步最近最久未使用置換算法為選擇最近一段時間內(nèi)最長時間內(nèi)沒有被訪問過的數(shù)據(jù)塊進行置換。
5.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法,其步驟二中第3步數(shù)據(jù)塊調(diào)入信息表要記錄的內(nèi)容有數(shù)據(jù)塊序號、數(shù)據(jù)塊起始頁框號、數(shù)據(jù)塊訪問時間。
6.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級緩存方法,其步驟二中第3步內(nèi)存中還維護一張存儲頁面表的位示圖,其方法為在內(nèi)存中劃分一塊固定存儲區(qū)域,每個內(nèi)存單元的每個比特代表一個頁面,如果該頁面被分配,則對應(yīng)的比特位置1,否則置0,以確定內(nèi)存中是否存在空閑單元。
【文檔編號】G06F17/30GK104270412SQ201410455411
【公開日】2015年1月7日 申請日期:2014年9月9日 優(yōu)先權(quán)日:2014年6月24日
【發(fā)明者】孫知信, 謝怡, 宮婧 申請人:南京郵電大學(xué)