應(yīng)用于分布式文件系統(tǒng)的任務(wù)調(diào)度方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及通信技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用于分布式文件系統(tǒng)的任務(wù)調(diào)度方法和設(shè)備。
【背景技術(shù)】
[0002]Hadoop 分布式文件系統(tǒng)(Hadoop Distributed File System,簡(jiǎn)稱 HDFS)具有高容錯(cuò)性的特點(diǎn),可以部署在低廉的硬件上,能夠提供高吞吐量的數(shù)據(jù)訪問(wèn),非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。HDFS包括多個(gè)元數(shù)據(jù)節(jié)點(diǎn)和大量的數(shù)據(jù)節(jié)點(diǎn)(Data node),元數(shù)據(jù)節(jié)點(diǎn)也稱為名字節(jié)點(diǎn)(Name node),元數(shù)據(jù)節(jié)點(diǎn)用來(lái)存儲(chǔ)HDFS的元數(shù)據(jù),元數(shù)據(jù)包括文件的命名、文件包括的數(shù)據(jù)塊的信息和以及數(shù)據(jù)塊的副本的信息等數(shù)據(jù),數(shù)據(jù)節(jié)點(diǎn)是HDFS中真正存儲(chǔ)數(shù)據(jù)的地方,數(shù)據(jù)節(jié)點(diǎn)還會(huì)周期性地向元數(shù)據(jù)節(jié)點(diǎn)匯報(bào)其存儲(chǔ)的數(shù)據(jù)塊信息。
[0003]Map Reduce是一個(gè)開(kāi)源的計(jì)算框架,主要用于大規(guī)模數(shù)據(jù)集中進(jìn)行并行運(yùn)算,從而提高大規(guī)模數(shù)據(jù)集的性能,因此,非常適合運(yùn)行在HDFS中。為了進(jìn)一步提高HDFS的性能,引入了緩存機(jī)制,緩存是一種根據(jù)局部性原理,利用小容量的高速存儲(chǔ)設(shè)備保存近期頻繁使用的數(shù)據(jù),從而提高整個(gè)存儲(chǔ)系統(tǒng)性能的機(jī)制。Dongfang Zhao等人提出了應(yīng)用于HDFS等分布式文件系統(tǒng)的緩存機(jī)制,分布式文件系統(tǒng)的每個(gè)數(shù)據(jù)節(jié)點(diǎn)上混合部署固態(tài)硬盤(Solid State Disk 簡(jiǎn)稱 SSD)和硬盤驅(qū)動(dòng)器(Hard Disk Drive,簡(jiǎn)稱 HDD),SSD 作為 HDD的緩存,通過(guò)記錄、分析以往的數(shù)據(jù)請(qǐng)求模式來(lái)預(yù)測(cè)將來(lái)可能被請(qǐng)求到的數(shù)據(jù),從而將將來(lái)可能被請(qǐng)求的數(shù)據(jù)從HDD預(yù)取到SSD,由于SSD的讀取速率比HDD快的多,直接從SSD中讀取數(shù)據(jù)速率更快,從而提高了分布式文件系統(tǒng)的性能。
[0004]現(xiàn)有的緩存策略都是雖然能夠在一定程度上提高系統(tǒng)性能,但是,由于基于對(duì)過(guò)去的訪問(wèn)情況估計(jì)將來(lái),有一定的粗略性,無(wú)法精確地將即將訪問(wèn)的數(shù)據(jù)提前讀入SSD。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供一種應(yīng)用于分布式文件系統(tǒng)的任務(wù)調(diào)度方法和設(shè)備,能夠準(zhǔn)確的將將要處理的數(shù)據(jù)塊預(yù)先從HDD中讀取到SSD中,提高了緩存的命中率。
[0006]本發(fā)明第一方面提供一種應(yīng)用于分布式文件系統(tǒng)的Map Reduce任務(wù)調(diào)度方法,包括:
[0007]元數(shù)據(jù)節(jié)點(diǎn)獲取待處理的任務(wù)對(duì)應(yīng)的數(shù)據(jù)塊的標(biāo)識(shí),并根據(jù)所述數(shù)據(jù)塊的標(biāo)識(shí)獲取所述數(shù)據(jù)塊的待讀取副本的存儲(chǔ)信息;
[0008]所述元數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述待讀取副本的存儲(chǔ)信息,向所述待讀取副本所在的數(shù)據(jù)節(jié)點(diǎn)發(fā)送預(yù)取指令,所述預(yù)取指令用于指示所述數(shù)據(jù)節(jié)點(diǎn)從所述數(shù)據(jù)節(jié)點(diǎn)的硬盤驅(qū)動(dòng)器中讀取所述數(shù)據(jù)塊,并將所述數(shù)據(jù)塊寫入所述數(shù)據(jù)節(jié)點(diǎn)的固態(tài)硬盤;
[0009]所述元數(shù)據(jù)節(jié)點(diǎn)將所述數(shù)據(jù)塊的元數(shù)據(jù)添加到預(yù)取數(shù)據(jù)成功表,所述預(yù)取數(shù)據(jù)成功表中的任務(wù)優(yōu)先被所述元數(shù)據(jù)節(jié)點(diǎn)調(diào)度,在所述元數(shù)據(jù)節(jié)點(diǎn)調(diào)度所述待處理的任務(wù)時(shí),所述元數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述預(yù)取數(shù)據(jù)成功表中保存的所述數(shù)據(jù)塊的元數(shù)據(jù)從所述數(shù)據(jù)節(jié)點(diǎn)的固態(tài)硬盤中讀取所述數(shù)據(jù)塊。
[0010]結(jié)合本發(fā)明第一方面,在本發(fā)明第一方面的第一種可能的實(shí)現(xiàn)方式中,所述元數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述數(shù)據(jù)塊的標(biāo)識(shí)獲取所述數(shù)據(jù)塊的待讀取副本的存儲(chǔ)信息,包括:
[0011]所述元數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述任務(wù)對(duì)應(yīng)的數(shù)據(jù)塊的標(biāo)識(shí),獲取所述數(shù)據(jù)塊的副本信息;
[0012]所述元數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述數(shù)據(jù)塊的副本信息,獲取所述數(shù)據(jù)塊的各個(gè)副本所在的數(shù)據(jù)節(jié)點(diǎn)的資源使用率,確定資源使用率最低的數(shù)據(jù)節(jié)點(diǎn);
[0013]若所述資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)只有一個(gè),則所述元數(shù)據(jù)節(jié)點(diǎn)將所述資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)上的副本作為所述數(shù)據(jù)塊的待讀取副本,并獲取所述待讀取副本的存儲(chǔ)信息;
[0014]若所述資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)為多個(gè),則所述元數(shù)據(jù)節(jié)點(diǎn)獲取所述各資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)的預(yù)取數(shù)據(jù)塊個(gè)數(shù),從所述各資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)中選取預(yù)取數(shù)據(jù)塊個(gè)數(shù)最少的數(shù)據(jù)節(jié)點(diǎn)上的副本作為所述數(shù)據(jù)塊的待讀取副本,并獲取所述待讀取副本的存儲(chǔ)信息。
[0015]結(jié)合本發(fā)明第一方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第二種可能的實(shí)現(xiàn)方式中,所述元數(shù)據(jù)節(jié)點(diǎn)在將所述數(shù)據(jù)塊的元數(shù)據(jù)添加到預(yù)取數(shù)據(jù)成功表之后,所述方法還包括:
[0016]所述元數(shù)據(jù)節(jié)點(diǎn)將所述數(shù)據(jù)節(jié)點(diǎn)的預(yù)取計(jì)數(shù)值加I。
[0017]結(jié)合本發(fā)明第一方面以及第一方面的第一種和第二種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第三種可能的實(shí)現(xiàn)方式中,所述元數(shù)據(jù)節(jié)點(diǎn)獲取待處理的任務(wù)對(duì)應(yīng)的數(shù)據(jù)塊的標(biāo)識(shí)之前,所述方法還包括:
[0018]所述元數(shù)據(jù)節(jié)點(diǎn)接收客戶端提交的Map Reduce作業(yè);
[0019]所述元數(shù)據(jù)節(jié)點(diǎn)將所述Map Reduce作業(yè)劃分為多個(gè)待處理的任務(wù)。
[0020]結(jié)合本發(fā)明第一方面,在本發(fā)明第一方面的第四種可能的實(shí)現(xiàn)方式中,所述元數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述數(shù)據(jù)塊的標(biāo)識(shí)獲取所述數(shù)據(jù)塊的待讀取副本之前,所述方法還包括:
[0021]所述元數(shù)據(jù)節(jié)點(diǎn)判斷所述預(yù)取數(shù)據(jù)成功表中是否包含所述數(shù)據(jù)塊的元數(shù)據(jù);
[0022]若不包含,則所述元數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述數(shù)據(jù)塊的標(biāo)識(shí)獲取所述數(shù)據(jù)塊的待讀取副本。
[0023]本發(fā)明第二方面提供一種元數(shù)據(jù)節(jié)點(diǎn),包括:
[0024]獲取模塊,用于獲取待處理的任務(wù)對(duì)應(yīng)的數(shù)據(jù)塊的標(biāo)識(shí),并根據(jù)所述數(shù)據(jù)塊的標(biāo)識(shí)獲取所述數(shù)據(jù)塊的待讀取副本的存儲(chǔ)信息;
[0025]發(fā)送模塊,用于根據(jù)所述待讀取副本的存儲(chǔ)信息,向所述待讀取副本所在的數(shù)據(jù)節(jié)點(diǎn)發(fā)送預(yù)取指令,所述預(yù)取指令用于指示所述數(shù)據(jù)節(jié)點(diǎn)從所述數(shù)據(jù)節(jié)點(diǎn)的硬盤驅(qū)動(dòng)器中讀取所述數(shù)據(jù)塊,并將所述數(shù)據(jù)塊寫入所述數(shù)據(jù)節(jié)點(diǎn)的固態(tài)硬盤;
[0026]處理模塊,用于將所述數(shù)據(jù)塊的元數(shù)據(jù)添加到預(yù)取數(shù)據(jù)成功表,所述預(yù)取數(shù)據(jù)成功表中的任務(wù)優(yōu)先被所述元數(shù)據(jù)節(jié)點(diǎn)調(diào)度,在所述元數(shù)據(jù)節(jié)點(diǎn)調(diào)度所述待處理的任務(wù)時(shí),所述處理模塊還用于根據(jù)所述預(yù)取數(shù)據(jù)成功表中保存的所述數(shù)據(jù)塊的元數(shù)據(jù)從所述數(shù)據(jù)節(jié)點(diǎn)的固態(tài)硬盤中讀取所述數(shù)據(jù)塊。
[0027]結(jié)合本發(fā)明第二方面,在本發(fā)明第二方面的第一種可能的實(shí)現(xiàn)方式中,所述獲取模塊具體用于:
[0028]根據(jù)所述任務(wù)對(duì)應(yīng)的數(shù)據(jù)塊的標(biāo)識(shí),獲取所述數(shù)據(jù)塊的副本信息;
[0029]根據(jù)所述數(shù)據(jù)塊的副本信息,獲取所述數(shù)據(jù)塊的各個(gè)副本所在的數(shù)據(jù)節(jié)點(diǎn)的資源使用率,確定資源使用率最低的數(shù)據(jù)節(jié)點(diǎn);
[0030]若所述資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)只有一個(gè),則將所述資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)上的副本作為所述數(shù)據(jù)塊的待讀取副本,并獲取所述待讀取副本的存儲(chǔ)信息;
[0031]若所述資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)為多個(gè),則獲取所述各資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)的預(yù)取數(shù)據(jù)塊個(gè)數(shù),從所述各資源使用率最低的數(shù)據(jù)節(jié)點(diǎn)中選取預(yù)取數(shù)據(jù)塊個(gè)數(shù)最少的數(shù)據(jù)節(jié)點(diǎn)上的副本作為所述數(shù)據(jù)塊的待讀取副本,并獲取所述待讀取副本的存儲(chǔ)信息。
[0032]結(jié)合本發(fā)明第二方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明第二方面的第二種可能的實(shí)現(xiàn)方式中,所述處理模塊還用于:
[0033]將所述數(shù)據(jù)節(jié)點(diǎn)的預(yù)取計(jì)數(shù)值加I。
[0034]結(jié)合本發(fā)明第二方面以及第二方面的第一種和第二種可能的實(shí)現(xiàn)方式,在本發(fā)明第二方面的第三種可能的實(shí)現(xiàn)方式中,所述獲取模塊還用于:
[0035]接收客戶端提交的Map Reduce作業(yè);
[0036]將所述Map Reduce作業(yè)劃分為多個(gè)待處理的任務(wù)。
[0037]結(jié)合本發(fā)明第二方面,在本發(fā)明第二方面的第四種可能的實(shí)現(xiàn)方式中,所述獲取模塊還用于:
[0038]判斷所述預(yù)取數(shù)據(jù)成功表中是否包含所述數(shù)據(jù)塊的元數(shù)據(jù);
[0039]若不包含,則根據(jù)所述數(shù)據(jù)塊的標(biāo)識(shí)獲取所述數(shù)據(jù)塊的待讀取副本。
[0040]本發(fā)明實(shí)施例的應(yīng)用于分布式文件系統(tǒng)的Map Reduce任務(wù)調(diào)度方法和設(shè)備,元數(shù)據(jù)節(jié)點(diǎn)通過(guò)獲取待處理的任務(wù)對(duì)應(yīng)的