欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法

文檔序號(hào):6626364閱讀:1225來源:國知局
一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法
【專利摘要】本發(fā)明公開了一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法,其包括三個(gè)大的步驟:步驟一、數(shù)據(jù)本地化處理的任務(wù)調(diào)度;步驟二、數(shù)據(jù)在本地內(nèi)存的局部性訪問;步驟三、本地內(nèi)存數(shù)據(jù)的重復(fù)利用。本發(fā)明所提出的方法能夠提高數(shù)據(jù)命中率,減少數(shù)據(jù)傳輸量,提升MapReduce的執(zhí)行效率。
【專利說明】一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其涉及到一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法。

【背景技術(shù)】
[0002]Apache Hadoop (—般簡(jiǎn)稱為Hadoop)是一個(gè)開源的分布式數(shù)據(jù)處理平臺(tái),它主要包括分布式文件處理系統(tǒng)(Hadoop Distributed File System,HDFS)和MapReduce計(jì)算模型。
[0003]Apache Hadoop是一款支持?jǐn)?shù)據(jù)密集型分布式應(yīng)用并以Apache2.0許可協(xié)議發(fā)布的開源軟件框架。它支持在商品硬件構(gòu)建的大型集群上運(yùn)行的應(yīng)用程序。Hadoop是根據(jù)Google公司發(fā)表的MapReduce和Google檔案系統(tǒng)的論文自行實(shí)作而成。
[0004]Hadoop框架透明地為應(yīng)用提供可靠性和數(shù)據(jù)移動(dòng)。它實(shí)現(xiàn)了名為MapReduce的編程范式:應(yīng)用程序被分割成許多小部分,而每個(gè)部分都能在集群中的任意節(jié)點(diǎn)上執(zhí)行或重新執(zhí)行。此外,Hadoop還提供了分布式文件系統(tǒng),用以存儲(chǔ)所有計(jì)算節(jié)點(diǎn)的數(shù)據(jù),這為整個(gè)集群帶來了非常高的帶寬。MapReduce和分布式文件系統(tǒng)的設(shè)計(jì),使得整個(gè)框架能夠自動(dòng)處理節(jié)點(diǎn)故障。它使應(yīng)用程序與成千上萬的獨(dú)立計(jì)算的電腦和PB級(jí)的數(shù)據(jù)。現(xiàn)在普遍認(rèn)為整個(gè)Apache Hadoop “平臺(tái)”包括Hadoop內(nèi)核、MapReduce、Hadoop分布式文件系統(tǒng)(HDFS)以及一些相關(guān)項(xiàng)目,有Apache Hive和Apache HBase等等。
[0005]HDFS能很好地滿足大規(guī)模數(shù)據(jù)的存儲(chǔ)需求,然而,它在處理實(shí)時(shí)數(shù)據(jù)讀取方面存在許多不足。由于執(zhí)行MapReduce任務(wù)的過程中涉及到大量的數(shù)據(jù)讀取,會(huì)對(duì)網(wǎng)絡(luò)傳輸和I/O (Input/Output)帶寬造成巨大壓力,所以要在HDFS的基礎(chǔ)上設(shè)置緩存系統(tǒng),減少數(shù)據(jù)傳輸量,以提高M(jìn)apReduce的執(zhí)行效率。
[0006]MapReduce將數(shù)據(jù)計(jì)算過程分為兩個(gè)階段:Map和Reduce,對(duì)應(yīng)于兩個(gè)處理函數(shù)mapper和reducer。在Map階段,原始數(shù)據(jù)被輸入mapper進(jìn)行過濾和轉(zhuǎn)換,獲得的中間數(shù)據(jù)結(jié)果作為reducer的輸入,得到最后的處理結(jié)果。在整個(gè)MapReduce的處理過程中,從HDFS中讀取原始數(shù)據(jù)所花費(fèi)的時(shí)間最長,因此,要想提高M(jìn)apReduce的執(zhí)行效率,需要從原始數(shù)據(jù)的讀取入手。通過設(shè)置相應(yīng)的緩存機(jī)制,提高數(shù)據(jù)命中率,使Map階段原始數(shù)據(jù)的讀取時(shí)間降低。
[0007]Memcached和RAMCloud (內(nèi)存云)是兩個(gè)典型的內(nèi)存級(jí)緩存系。Memcached是在基于磁盤存儲(chǔ)的海量數(shù)據(jù)中為后端提供相對(duì)集中的、非協(xié)作的、對(duì)用戶非透明的數(shù)據(jù)緩存服務(wù)。RAMCloud則是使用分布式共享內(nèi)存替代磁盤完成數(shù)據(jù)存儲(chǔ)和管理,并提出了緩存數(shù)據(jù)基于多磁盤分散備份,并行快速修復(fù)的思想。
[0008]兩者本質(zhì)上都還是面向磁盤數(shù)據(jù)相對(duì)集中存放、計(jì)算資源與存儲(chǔ)資源分離的架構(gòu),因此難以直接適用于MapReduce平臺(tái);同時(shí)由于支持的應(yīng)用類型差異,二者均未考慮由于MapReduce應(yīng)用數(shù)據(jù)本地化處理的特征。
[0009]基于時(shí)間局部性的緩存替換策略LAC(Locality_Aware Cooperative Caching,位置感知協(xié)作緩存)通過同一數(shù)據(jù)塊的兩次訪問之間所間隔的其他數(shù)據(jù)塊的訪問次數(shù)來量化數(shù)據(jù)訪問的時(shí)間局部性。將數(shù)據(jù)塊的傳輸代價(jià)、數(shù)據(jù)塊的大小以及數(shù)據(jù)塊的最近訪問時(shí)間等因素構(gòu)建緩存替換代價(jià)模型。
[0010]這些機(jī)制均面向傳統(tǒng)數(shù)據(jù)中心平臺(tái)架構(gòu),然而在Map/Reduce平臺(tái)計(jì)算資源與存儲(chǔ)資源的緊耦合部署和數(shù)據(jù)本地化處理的特征,使得基于數(shù)據(jù)塊級(jí)的數(shù)據(jù)訪問特征統(tǒng)計(jì)結(jié)果受到計(jì)算資源分配策略及實(shí)時(shí)負(fù)載的干擾,難以完整真實(shí)的反映數(shù)據(jù)訪問特征。
[0011]針對(duì)MapReduce任務(wù)執(zhí)行過程中需要讀取大量的數(shù)據(jù),對(duì)網(wǎng)絡(luò)傳輸和I/O帶寬造成巨大壓力,現(xiàn)有技術(shù)中上沒有很好的解決方法。


【發(fā)明內(nèi)容】

[0012]為解決上述技術(shù)問題,本發(fā)明采用了如下技術(shù)方案:
[0013]—種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法,采用Apache Hadoop實(shí)現(xiàn),其方法如下:
[0014]步驟一、數(shù)據(jù)本地化處理的任務(wù)調(diào)度,又包含下列子步驟:
[0015]第I步、用戶向Jobtrack提交作業(yè)請(qǐng)求,Jobtrack獲取Job所要讀取的數(shù)據(jù)范圍以及把作業(yè)分解成若干個(gè)Map任務(wù)和Reduce任務(wù);
[0016]第2步、Jobtrack根據(jù)每個(gè)Map任務(wù)所要讀取的數(shù)據(jù),通過訪問NameNode的元數(shù)據(jù)來獲取存放這些數(shù)據(jù)的DataNode位置;
[0017]第3步、空閑的Tasktrack節(jié)點(diǎn)定時(shí)向Jobtrack匯報(bào)自己的情況,Jobtrack從這些空閑的Tasktrack節(jié)點(diǎn)中選擇有目標(biāo)數(shù)據(jù)的DataNode,并將相應(yīng)的Map任務(wù)分配到該節(jié)占中.
[0018]步驟二、數(shù)據(jù)在本地內(nèi)存的局部性訪問,又包含如下子步驟:
[0019]第I步、將服務(wù)器的內(nèi)存空間分成大小相等的若干存儲(chǔ)區(qū)域,每一塊區(qū)域稱之為頁框;
[0020]第2步、每一頁是最基本的內(nèi)存分配。在每一頁的底部預(yù)留字節(jié)來存放指向下一頁的地址或者表示該數(shù)據(jù)塊已結(jié)束。每個(gè)數(shù)據(jù)塊在內(nèi)存中表示為一串頁的鏈表。
[0021]第3步、內(nèi)存中維護(hù)一張數(shù)據(jù)塊調(diào)入信息表,當(dāng)內(nèi)存中的數(shù)據(jù)塊達(dá)到了存儲(chǔ)空間的上限,新的數(shù)據(jù)塊需要調(diào)入時(shí),使用最近最久未使用置換算法來執(zhí)行數(shù)據(jù)塊的替換?’另夕卜,內(nèi)存中還維護(hù)一張存儲(chǔ)頁面表的位示圖。
[0022]步驟三、本地內(nèi)存數(shù)據(jù)的重復(fù)利用
[0023]第I步、在Master服務(wù)器中維護(hù)一張全局緩存信息管理表,負(fù)責(zé)記錄每個(gè)Slave節(jié)點(diǎn)的緩存信息以及該節(jié)點(diǎn)是否有足夠的Slot資源。每個(gè)Slave服務(wù)器定時(shí)向Master服務(wù)器發(fā)送信息,匯報(bào)自己的緩存信息和Slot資源信息。
[0024]第2步、當(dāng)Jobtrack進(jìn)行任務(wù)調(diào)度時(shí),首先檢查全局緩存信息表,如果發(fā)現(xiàn)緩存中有Map任務(wù)所需的數(shù)據(jù),則優(yōu)先分配該任務(wù)。倘若沒有則遵循數(shù)據(jù)本地化處理的調(diào)度策略。
[0025]步驟二中第I步中的葉框大小為64k。
[0026]步驟二中第2步中字節(jié)數(shù)為4。
[0027]步驟二中第3步最近最久未使用置換算法為選擇最近一段時(shí)間內(nèi)最長時(shí)間內(nèi)沒有被訪問過的數(shù)據(jù)塊進(jìn)行置換。
[0028]步驟二中第3步數(shù)據(jù)塊調(diào)入信息表要記錄的內(nèi)容有數(shù)據(jù)塊序號(hào)、數(shù)據(jù)塊起始頁框號(hào)、數(shù)據(jù)塊訪問時(shí)間。
[0029]步驟二中第3步內(nèi)存中還維護(hù)一張存儲(chǔ)頁面表的位示圖,其方法為在內(nèi)存中劃分一塊固定存儲(chǔ)區(qū)域,每個(gè)內(nèi)存單元的每個(gè)比特代表一個(gè)頁面,如果該頁面被分配,則對(duì)應(yīng)的比特位置1,否則置0,以確定內(nèi)存中是否存在空閑單元。
[0030]本發(fā)明所提出的基于HDFS的三級(jí)緩存機(jī)制能夠提高數(shù)據(jù)命中率,減少數(shù)據(jù)傳輸量,提升MapReduce的執(zhí)行效率。

【專利附圖】

【附圖說明】
[0031 ] 圖1基于HDFS的三級(jí)緩存架構(gòu)圖。

【具體實(shí)施方式】
[0032]本發(fā)明所提出的三級(jí)緩存機(jī)制是運(yùn)行于Hadoop平臺(tái)的分布式文件系統(tǒng)HDFS,包括三個(gè)層次,如圖1所示:1、數(shù)據(jù)本地化處理的任務(wù)調(diào)度;2、數(shù)據(jù)在本地內(nèi)存的局部性訪問;3、本地內(nèi)存數(shù)據(jù)的重復(fù)利用。
[0033]一般情況下,HDFS包含一個(gè)NameNode部署在主服務(wù)器上大量DataNode部署在從服務(wù)器上NameNode負(fù)責(zé)管理用戶文件的元數(shù)據(jù)信息。元數(shù)據(jù)由三部分組成,分別是文件系統(tǒng)目錄樹信息、文件和文件所拆分的數(shù)據(jù)塊的對(duì)應(yīng)關(guān)系、數(shù)據(jù)塊在DataNode上的分布位置信息。存儲(chǔ)在HDFS的文件被拆成同樣大小的數(shù)據(jù)塊(通常是64MB),這些數(shù)據(jù)塊將會(huì)復(fù)制存儲(chǔ)到多個(gè)數(shù)據(jù)存儲(chǔ)服務(wù)器中。每個(gè)數(shù)據(jù)存儲(chǔ)服務(wù)器在本地磁盤上用Linux文件系統(tǒng)保存這些塊,并且對(duì)數(shù)據(jù)塊進(jìn)行讀寫。
[0034]MapReduce計(jì)算模式是一種標(biāo)準(zhǔn)的函數(shù)式編程模式??蛻舳擞脩敉ㄟ^編程實(shí)現(xiàn)對(duì)文件的操作。每個(gè)用戶程序可以看做是一個(gè)作業(yè),而作業(yè)將會(huì)由Jobtrack(作業(yè)調(diào)度)分解成若干個(gè)Map和Reduce任務(wù)。Map任務(wù)從HDFS中讀數(shù)據(jù),Reduce任務(wù)處理好的數(shù)據(jù)寫入HDFS,所以本發(fā)明所提出的三級(jí)緩存系統(tǒng)主要服務(wù)于Map任務(wù),保證Map能在最短的時(shí)間內(nèi)找到想要的數(shù)據(jù)。
[0035]步驟一:數(shù)據(jù)本地化處理的任務(wù)調(diào)度
[0036]由于HDFS是一個(gè)Master/Slave結(jié)構(gòu)(主從結(jié)構(gòu)),因而可以將NameNode (名字節(jié)點(diǎn))和Jobtrack部署在Master服務(wù)器(主服務(wù)器)中,DataNode (數(shù)據(jù)節(jié)點(diǎn))和Tasktrack(任務(wù)調(diào)度)部署在Slave服務(wù)器從服務(wù)器中。假如Map任務(wù)所要處理的數(shù)據(jù)恰好保存在本地服務(wù)器上,那么Map任務(wù)可以直接從本地磁盤中讀取數(shù)據(jù),減少數(shù)據(jù)在網(wǎng)絡(luò)中傳輸時(shí)間。當(dāng)Jobtrack進(jìn)行任務(wù)調(diào)度時(shí),優(yōu)先將Map任務(wù)分配給包含該任務(wù)所要處理數(shù)據(jù)塊的DataNode上。為了實(shí)現(xiàn)這一目的,split分片大小與數(shù)據(jù)塊大小一致,因此在InputSplit元數(shù)據(jù)信息中,host列表上只包含一個(gè)節(jié)點(diǎn),能完全實(shí)現(xiàn)數(shù)據(jù)本地化處理。
[0037]以數(shù)據(jù)本地化處理為導(dǎo)向的任務(wù)調(diào)度過程如下:
[0038]1、用戶編寫MapReduce程序創(chuàng)建新的JobClient實(shí)例,向Jobtrack提交作業(yè)請(qǐng)求。Jobtrack收到一個(gè)Job Client請(qǐng)求,并做應(yīng)答。然后獲取Job所要讀取的數(shù)據(jù)范圍以及把作業(yè)分解成若干個(gè)Map任務(wù)和Reduce任務(wù),每個(gè)Map任務(wù)處理相應(yīng)的部分?jǐn)?shù)據(jù),為一個(gè)split大小。
[0039]2、Jobtrack根據(jù)每個(gè)Map任務(wù)所要讀取的數(shù)據(jù),通過訪問NameNode的元數(shù)據(jù)來獲取存放這些數(shù)據(jù)的DataNode位置,包括備份的數(shù)據(jù)節(jié)點(diǎn)位置。
[0040]3、空閑的Tasktrack節(jié)點(diǎn)定時(shí)向Jobtrack匯報(bào)自己的情況,Jobtrack從這些空閑的Tasktrack節(jié)點(diǎn)中選擇有目標(biāo)數(shù)據(jù)的DataNode,并將相應(yīng)的Map任務(wù)分配到該節(jié)點(diǎn)中。
[0041]步驟二:數(shù)據(jù)在本地內(nèi)存的局部性訪問
[0042]顯然,磁盤的讀取速率遠(yuǎn)遠(yuǎn)跟不上CPU的處理速率,所以設(shè)置內(nèi)存緩沖區(qū)來平衡兩者的差距。將磁盤內(nèi)的部分?jǐn)?shù)據(jù)預(yù)先讀取到內(nèi)存中,當(dāng)CPU遇到讀取數(shù)據(jù)的指令時(shí),直接從內(nèi)存中獲得相應(yīng)的數(shù)據(jù)。這樣可以減少M(fèi)ap任務(wù)從本地磁盤讀取數(shù)據(jù)的時(shí)間,本發(fā)明所提出的內(nèi)存級(jí)數(shù)據(jù)緩存調(diào)度是以局部性訪問為基礎(chǔ)。雖然兩個(gè)Map任務(wù)之間是獨(dú)立的,但是Map任務(wù)是從用戶程序中分解出來的,所以前后之間滿足局部性訪問原理,可以將數(shù)據(jù)預(yù)先調(diào)入內(nèi)存或者上次被讀取的數(shù)據(jù)不要馬上調(diào)出內(nèi)存,在下一個(gè)Map任務(wù)到來之時(shí),便可以直接讀取數(shù)據(jù)。
[0043]以局部性訪問為基礎(chǔ)的內(nèi)存級(jí)數(shù)據(jù)緩存調(diào)度過程如下:
[0044]1、將服務(wù)器的內(nèi)存空間分成大小相等的若干存儲(chǔ)區(qū)域,每一塊區(qū)域稱之為頁框,頁框大小為64K,由于HDFS中每個(gè)數(shù)據(jù)塊的大小為64MB,所以一個(gè)數(shù)據(jù)塊所需的頁框數(shù)為1024個(gè)。頁框在內(nèi)存中從O開始連續(xù)編號(hào)。
[0045]2、每一頁是最基本的內(nèi)存分配。在每一頁的底部預(yù)留4個(gè)字節(jié)來存放指向下一頁的地址或者表示該數(shù)據(jù)塊已結(jié)束。每個(gè)數(shù)據(jù)塊在內(nèi)存中表示為一串頁的鏈表。
[0046]3、為了方便從內(nèi)存中找到所需的數(shù)據(jù)塊,從服務(wù)器的內(nèi)存中維護(hù)一張數(shù)據(jù)塊調(diào)入信息表,顯示哪些數(shù)據(jù)塊調(diào)入內(nèi)存,在內(nèi)存中的存儲(chǔ)位置以及什么時(shí)候調(diào)入內(nèi)存,因此該信息表中要記錄的選項(xiàng)有:數(shù)據(jù)塊序號(hào)、數(shù)據(jù)塊起始頁框號(hào)、數(shù)據(jù)塊訪問時(shí)間。當(dāng)內(nèi)存中的數(shù)據(jù)塊達(dá)到了存儲(chǔ)空間的上限,新的數(shù)據(jù)塊需要調(diào)入時(shí),使用最近最久未使用置換算法(Least Recently Used, LRU)來執(zhí)行數(shù)據(jù)塊的替換,即選擇最近一段時(shí)間內(nèi)最長時(shí)間內(nèi)沒有被訪問過的數(shù)據(jù)塊進(jìn)行置換,因?yàn)樵L問局部性原理認(rèn)為在過去一段時(shí)間內(nèi)不曾被訪問過的數(shù)據(jù)塊,在最近的將來也不會(huì)被訪問,所以數(shù)據(jù)塊信息表中需要記錄數(shù)據(jù)塊的調(diào)入時(shí)間,是為執(zhí)行LRU算法準(zhǔn)備的另外,內(nèi)存中還維護(hù)一張存儲(chǔ)頁面表的位示圖,在內(nèi)存中劃分一塊固定存儲(chǔ)區(qū)域,每個(gè)內(nèi)存單元的每個(gè)比特代表一個(gè)頁面,如果該頁面被分配,則對(duì)應(yīng)的比特位置1,否則置0,以確定內(nèi)存中是否存在空閑單元,位示圖的作用是為了指出內(nèi)存中各頁面是否已被分配出去,以及為分配頁面的總數(shù)。前面也提到了,為了方便內(nèi)存的管理,將內(nèi)存空間分成大小相同的若干頁框,數(shù)據(jù)塊調(diào)入內(nèi)存中,必然要分配部分頁來存儲(chǔ),那么為了管理頁框的分配,所以用位示圖來表示每一頁的分配情況,分配了置“1”,沒分配置“O”。下一次要調(diào)入數(shù)據(jù)塊時(shí),首先要查看位示圖,看是否有足夠的頁框供數(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每個(gè)數(shù)據(jù)塊的大小為64MB,所以內(nèi)存緩存中一次性能調(diào)入數(shù)據(jù)塊有96個(gè)數(shù)據(jù)塊,所以數(shù)據(jù)塊調(diào)入信息表不會(huì)很大。
[0048]步驟三:本地內(nèi)存數(shù)據(jù)的重復(fù)利用
[0049]Map任務(wù)執(zhí)行結(jié)束后,它所讀取的數(shù)據(jù)會(huì)保留在內(nèi)存中。當(dāng)下一個(gè)Map任務(wù)分配到該DataNode時(shí),為了避免內(nèi)存替換所花費(fèi)的不必要時(shí)間,Jobtrack在下一輪分配任務(wù)時(shí)應(yīng)優(yōu)先考慮節(jié)點(diǎn)內(nèi)存中的數(shù)據(jù)與Map任務(wù)所需處理數(shù)據(jù)的匹配情況。所以本發(fā)明提出以內(nèi)存數(shù)據(jù)重復(fù)利用為驅(qū)動(dòng)的任務(wù)調(diào)度。
[0050]以內(nèi)存數(shù)據(jù)重復(fù)利用為驅(qū)動(dòng)的任務(wù)調(diào)度過程:
[0051]1、在Master服務(wù)器中維護(hù)一張全局緩存信息管理表,負(fù)責(zé)記錄每個(gè)Slave節(jié)點(diǎn)的緩存信息以及該節(jié)點(diǎn)是否有足夠的Slot資源。每個(gè)Slave服務(wù)器定時(shí)向Master服務(wù)器發(fā)送信息,匯報(bào)自己的緩存信息和Slot資源信息,TaskTracker使用slot表示在本節(jié)點(diǎn)上等量劃分的資源量。slot代表計(jì)算資源(CPU、內(nèi)存等)。一個(gè)Map Task獲取到一個(gè)slot后才有機(jī)會(huì)運(yùn)行。
[0052]2、當(dāng)Jobtrack進(jìn)行任務(wù)調(diào)度時(shí),首先檢查全局緩存信息表,如果發(fā)現(xiàn)緩存中有Map任務(wù)所需的數(shù)據(jù),則優(yōu)先分配該任務(wù)。倘若沒有則遵循數(shù)據(jù)本地化處理的調(diào)度策略。
[0053]所以,根據(jù)本發(fā)明所提出的基于HDFS的三級(jí)緩存機(jī)制,Jobtrack在任務(wù)調(diào)度和數(shù)據(jù)加載時(shí)遵循如下過程Jobtrack分配Map任務(wù)時(shí),先檢查全局緩存信息表,優(yōu)先把任務(wù)分配給內(nèi)存中調(diào)入目標(biāo)數(shù)據(jù)塊的節(jié)點(diǎn);然后根據(jù)數(shù)據(jù)本地化處理的策略,將剩余的Map任務(wù)分配到保存目標(biāo)數(shù)據(jù)塊的節(jié)點(diǎn)中,執(zhí)行Map任務(wù)時(shí)要把所需讀取的數(shù)據(jù)塊加載到內(nèi)存中,內(nèi)存替換遵循以局部性訪問為基礎(chǔ)的內(nèi)存級(jí)數(shù)據(jù)緩存調(diào)度。
[0054]本發(fā)明基于HFDS的三級(jí)緩存機(jī)制,包含以數(shù)據(jù)本地化處理為導(dǎo)向的任務(wù)調(diào)度、以局部性訪問為基礎(chǔ)的內(nèi)存級(jí)數(shù)據(jù)緩存調(diào)度、以內(nèi)存數(shù)據(jù)重復(fù)利用為驅(qū)動(dòng)的任務(wù)調(diào)度。以局部性訪問為基礎(chǔ)的內(nèi)存級(jí)數(shù)據(jù)緩存調(diào)度過程,數(shù)據(jù)塊調(diào)入內(nèi)存中是按頁存儲(chǔ),每個(gè)數(shù)據(jù)塊在內(nèi)存中表示為一串頁的鏈表,易于內(nèi)存空間的回收利用。通過數(shù)據(jù)塊調(diào)入信息表進(jìn)行內(nèi)存替換。
【權(quán)利要求】
1.一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法,采用Apache Hadoop實(shí)現(xiàn),其方法如下: 步驟一、數(shù)據(jù)本地化處理的任務(wù)調(diào)度,又包含下列子步驟: 第I步、用戶向Jobtrack提交作業(yè)請(qǐng)求,Jobtrack獲取Job所要讀取的數(shù)據(jù)范圍以及把作業(yè)分解成若干個(gè)Map任務(wù)和Reduce任務(wù); 第2步、Jobtrack根據(jù)每個(gè)Map任務(wù)所要讀取的數(shù)據(jù),通過訪問NameNode的元數(shù)據(jù)來獲取存放這些數(shù)據(jù)的DataNode位置; 第3步、空閑的Tasktrack節(jié)點(diǎn)定時(shí)向Jobtrack匯報(bào)自己的情況,Jobtrack從這些空閑的Tasktrack節(jié)點(diǎn)中選擇有目標(biāo)數(shù)據(jù)的DataNode,并將相應(yīng)的Map任務(wù)分配到該節(jié)點(diǎn)中; 步驟二、數(shù)據(jù)在本地內(nèi)存的局部性訪問,又包含如下子步驟: 第I步、將服務(wù)器的內(nèi)存空間分成大小相等的若干存儲(chǔ)區(qū)域,每一塊區(qū)域稱之為頁框; 第2步、每一頁是最基本的內(nèi)存分配,在每一頁的底部預(yù)留字節(jié)來存放指向下一頁的地址或者表示該數(shù)據(jù)塊已結(jié)束,每個(gè)數(shù)據(jù)塊在內(nèi)存中表示為一串頁的鏈表; 第3步、內(nèi)存中維護(hù)一張數(shù)據(jù)塊調(diào)入信息表,當(dāng)內(nèi)存中的數(shù)據(jù)塊達(dá)到了存儲(chǔ)空間的上限,新的數(shù)據(jù)塊需要調(diào)入時(shí),使用最近最久未使用置換算法來執(zhí)行數(shù)據(jù)塊的替換;另外,內(nèi)存中還維護(hù)一張存儲(chǔ)頁面表的位示圖; 步驟三、本地內(nèi)存數(shù)據(jù)的重復(fù)利用: 第I步、在Master服務(wù)器中維護(hù)一張全局緩存信息管理表,負(fù)責(zé)記錄每個(gè)Slave節(jié)點(diǎn)的緩存信息以及該節(jié)點(diǎn)是否有足夠的Slot資源,每個(gè)Slave服務(wù)器定時(shí)向Master服務(wù)器發(fā)送信息,匯報(bào)自己的緩存信息和Slot資源信息; 第2步、當(dāng)Jobtrack進(jìn)行任務(wù)調(diào)度時(shí),首先檢查全局緩存信息表,如果發(fā)現(xiàn)緩存中有Map任務(wù)所需的數(shù)據(jù),則優(yōu)先分配該任務(wù),倘若沒有則遵循數(shù)據(jù)本地化處理的調(diào)度策略。
2.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法,其步驟二中第I步中的葉框大小為64k。
3.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法,其步驟二中第2步中字節(jié)數(shù)為4。
4.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法,其步驟二中第3步最近最久未使用置換算法為選擇最近一段時(shí)間內(nèi)最長時(shí)間內(nèi)沒有被訪問過的數(shù)據(jù)塊進(jìn)行置換。
5.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法,其步驟二中第3步數(shù)據(jù)塊調(diào)入信息表要記錄的內(nèi)容有數(shù)據(jù)塊序號(hào)、數(shù)據(jù)塊起始頁框號(hào)、數(shù)據(jù)塊訪問時(shí)間。
6.根據(jù)權(quán)利要求1所述的一種基于Hadoop分布式文件系統(tǒng)的三級(jí)緩存方法,其步驟二中第3步內(nèi)存中還維護(hù)一張存儲(chǔ)頁面表的位示圖,其方法為在內(nèi)存中劃分一塊固定存儲(chǔ)區(qū)域,每個(gè)內(nèi)存單元的每個(gè)比特代表一個(gè)頁面,如果該頁面被分配,則對(duì)應(yīng)的比特位置1,否則置0,以確定內(nèi)存中是否存在空閑單元。
【文檔編號(hào)】G06F17/30GK104270412SQ201410455411
【公開日】2015年1月7日 申請(qǐng)日期:2014年9月9日 優(yōu)先權(quán)日:2014年6月24日
【發(fā)明者】孫知信, 謝怡, 宮婧 申請(qǐng)人:南京郵電大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
剑河县| 油尖旺区| 江都市| 博客| 通渭县| 汾阳市| 凭祥市| 高碑店市| 长海县| 饶河县| 北碚区| 磐石市| 陈巴尔虎旗| 固始县| 响水县| 垣曲县| 台南县| 尼玛县| 合肥市| 达孜县| 萨嘎县| 务川| 岢岚县| 平阴县| 霍城县| 白山市| 嘉荫县| 新民市| 新蔡县| 栖霞市| 民县| 丹东市| 博白县| 宁陕县| 十堰市| 临西县| 东港市| 呼玛县| 阿尔山市| 新密市| 满城县|