本發(fā)明涉及Hadoop數(shù)據(jù)密集型任務(wù)下的優(yōu)化技術(shù)領(lǐng)域,特別涉及一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu)及調(diào)度策略。
背景技術(shù):
Hadoop是一個(gè)大數(shù)據(jù)領(lǐng)域非常成功的框架,被廣泛應(yīng)用在工業(yè)和學(xué)術(shù)上。它采用先進(jìn)的map/reduce思想,通過(guò)將大規(guī)模的數(shù)據(jù)拆分成大量的小的塊,然后分發(fā)給集群中的各個(gè)節(jié)點(diǎn),讓每個(gè)節(jié)點(diǎn)來(lái)處理自己負(fù)責(zé)的區(qū)塊的內(nèi)容。通過(guò)這種方式以讓單臺(tái)計(jì)算機(jī)難以完成的任務(wù)可以通過(guò)多臺(tái)計(jì)算機(jī)來(lái)完成。然而,現(xiàn)有的Hadoop在處理數(shù)據(jù)密集型應(yīng)用的時(shí)會(huì)存在以下問(wèn)題:
現(xiàn)有的Hadoop處理通過(guò)緩存來(lái)存儲(chǔ)中間數(shù)據(jù),如果緩存不足,緩存的溢出數(shù)據(jù)將會(huì)被存儲(chǔ)于磁盤。具體過(guò)程為:執(zhí)行map任務(wù)時(shí),如果map任務(wù)對(duì)應(yīng)的緩存不足時(shí),緩存的溢出數(shù)據(jù)將存儲(chǔ)于map任務(wù)所在節(jié)點(diǎn)的磁盤,待map任務(wù)執(zhí)行完畢,map任務(wù)存儲(chǔ)于緩存和磁盤的輸出數(shù)據(jù)將聚合存儲(chǔ)于磁盤供reduce任務(wù)調(diào)用;如果map任務(wù)對(duì)應(yīng)的緩存充足時(shí),待map任務(wù)執(zhí)行完畢,map任務(wù)存儲(chǔ)于緩存的輸出數(shù)據(jù)將轉(zhuǎn)移存儲(chǔ)于磁盤供reduce任務(wù)調(diào)用;故,無(wú)論如何改變map任務(wù)對(duì)應(yīng)的緩存的大小,在map任務(wù)執(zhí)行完畢后均會(huì)有大量的數(shù)據(jù)分發(fā)到磁盤,導(dǎo)致數(shù)據(jù)的下一步讀取過(guò)慢而影響整體性能。在所有map任務(wù)執(zhí)行完畢,reduce任務(wù)所在的節(jié)點(diǎn)會(huì)復(fù)制來(lái)自map任務(wù)的輸出數(shù)據(jù),此輸出數(shù)據(jù)將優(yōu)先存儲(chǔ)于reduce任務(wù)對(duì)應(yīng)的緩存中,如果緩存不足,緩存的溢出數(shù)據(jù)將會(huì)被存儲(chǔ)于reduce任務(wù)所在節(jié)點(diǎn)的磁盤,待復(fù)制完畢后,復(fù)制存儲(chǔ)于緩存和磁盤的map任務(wù)的輸出數(shù)據(jù)將聚合存儲(chǔ)于磁盤供執(zhí)行reduce任務(wù)使用;故,又將會(huì)有大量的數(shù)據(jù)分發(fā)到磁盤,導(dǎo)致數(shù)據(jù)的下一步讀取過(guò)慢而影響整體性能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的是提供一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu)及調(diào)度策略,解決現(xiàn)有技術(shù)中存在的上述問(wèn)題。
本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:
一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu),所述Hadoop架構(gòu)中的節(jié)點(diǎn)具有虛擬存儲(chǔ)盤和磁盤;
所述虛擬存儲(chǔ)盤,其用于存儲(chǔ)所述節(jié)點(diǎn)上map和/或reduce任務(wù)對(duì)應(yīng)緩存的溢出數(shù)據(jù);
所述磁盤,其用于當(dāng)所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)達(dá)到所述虛擬存儲(chǔ)盤的門限時(shí),存儲(chǔ)所述溢出數(shù)據(jù)。
本發(fā)明的有益效果是:引入虛擬存儲(chǔ)盤,將節(jié)點(diǎn)上map和/或reduce任務(wù)對(duì)應(yīng)緩存的溢出數(shù)據(jù)存儲(chǔ)于虛擬存儲(chǔ)盤,僅當(dāng)虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)達(dá)到虛擬存儲(chǔ)盤的門限時(shí),才將溢出數(shù)據(jù)存儲(chǔ)于磁盤;虛擬存儲(chǔ)盤的訪問(wèn)速度比磁盤高幾個(gè)數(shù)量級(jí),使用虛擬存儲(chǔ)盤會(huì)讓Hadoop更快的讀取數(shù)據(jù);且使用虛擬存儲(chǔ)盤來(lái)存儲(chǔ)節(jié)點(diǎn)上map和/或reduce任務(wù)對(duì)應(yīng)緩存的溢出數(shù)據(jù),Hadoop為map和reduce任務(wù)配置的緩存依然存在,配置參數(shù)不需重新設(shè)定;另,虛擬存儲(chǔ)盤具有磁盤的讀寫等功能,可有效避免Hadoop應(yīng)用代碼的修改。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
進(jìn)一步,所述虛擬存儲(chǔ)盤配置有tmpfs文件系統(tǒng)。
采用上述進(jìn)一步方案的有益效果是:tmpfs文件系統(tǒng)可以簡(jiǎn)化虛擬存儲(chǔ)盤的操作,讓每次啟動(dòng)可以直接使用虛擬存儲(chǔ)盤,而不需要再次進(jìn)行掛載。
進(jìn)一步,所述虛擬存儲(chǔ)盤未達(dá)到所述門限的區(qū)域劃分有用于存儲(chǔ)Hadoop輸入輸出數(shù)據(jù)的空間。
采用上述進(jìn)一步方案的有益效果是:將Hadoop輸入輸出數(shù)據(jù)存儲(chǔ)于虛擬存儲(chǔ)盤,提高Hadoop輸入輸出數(shù)據(jù)的讀取速度。
進(jìn)一步,所述門限包括第一門限和第二門限,所述第一門限低于所述第二門限。
本發(fā)明的另一技術(shù)方案如下:
一種基于虛擬存儲(chǔ)盤的Hadoop調(diào)度策略,采用上述一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu);將所述節(jié)點(diǎn)上map和/或reduce任務(wù)對(duì)應(yīng)緩存的溢出數(shù)據(jù)存儲(chǔ)于所述虛擬存儲(chǔ)盤,且當(dāng)所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)達(dá)到所述虛擬存儲(chǔ)盤的門限時(shí),將所述溢出數(shù)據(jù)存儲(chǔ)于所述磁盤。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
進(jìn)一步,所述虛擬存儲(chǔ)盤未達(dá)到所述門限的區(qū)域劃分有用于存儲(chǔ)Hadoop輸入輸出數(shù)據(jù)的空間;
將Hadoop輸入輸出數(shù)據(jù)存儲(chǔ)于所述空間。
進(jìn)一步,所述門限包括第一門限和第二門限,所述第一門限低于所述第二門限;
當(dāng)所述節(jié)點(diǎn)上map或reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生溢出數(shù)據(jù)時(shí),進(jìn)行如下操作:
步驟1,判斷所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)是否達(dá)到所述虛擬存儲(chǔ)盤的第一門限;是,則執(zhí)行步驟2;否,則執(zhí)行步驟7;
步驟2,判斷所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)是否達(dá)到所述虛擬存儲(chǔ)盤的第二門限;是,則執(zhí)行步驟3;否,則執(zhí)行步驟6;
步驟3,將所述虛擬存儲(chǔ)盤已存儲(chǔ)的執(zhí)行完畢時(shí)刻最接近當(dāng)前時(shí)刻的map或reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù)轉(zhuǎn)移到所述磁盤;
步驟4,再次判斷所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)是否達(dá)到所述虛擬存儲(chǔ)盤的第二門限;是,則返回執(zhí)行步驟3,否,則執(zhí)行步驟5;
步驟5,再次判斷所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)是否達(dá)到所述虛擬存儲(chǔ)盤的第一門限;是,則執(zhí)行步驟6,否則執(zhí)行步驟7;
步驟6,判斷所述虛擬存儲(chǔ)盤是否存儲(chǔ)有所述map或reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù);是,則執(zhí)行步驟7;否,則將所述溢出數(shù)據(jù)存儲(chǔ)于所述磁盤,并結(jié)束所述操作;
步驟7,將所述溢出數(shù)據(jù)存儲(chǔ)于所述虛擬存儲(chǔ)盤,并結(jié)束所述操作。
采用上述進(jìn)一步方案的有益效果是:提高了溢出數(shù)據(jù)在虛擬存儲(chǔ)盤的存儲(chǔ)時(shí)間,進(jìn)一步提高了數(shù)據(jù)分發(fā)效率,且不會(huì)造成數(shù)據(jù)的丟失。
進(jìn)一步,所述步驟3包括如下步驟:
步驟31,判斷所述虛擬存儲(chǔ)盤是否存儲(chǔ)有執(zhí)行完畢的reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù);是,則執(zhí)行步驟32;否,則執(zhí)行步驟33;
步驟32,將所述虛擬存儲(chǔ)盤已存儲(chǔ)的執(zhí)行完畢時(shí)刻最接近當(dāng)前時(shí)刻的reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù)轉(zhuǎn)移到所述磁盤,并執(zhí)行步驟4;
步驟33,將所述虛擬存儲(chǔ)盤已存儲(chǔ)的執(zhí)行完畢時(shí)刻最接近當(dāng)前時(shí)刻的map任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù)轉(zhuǎn)移到所述磁盤,并執(zhí)行步驟4。
進(jìn)一步,所述節(jié)點(diǎn)包括主節(jié)點(diǎn)和從節(jié)點(diǎn);
當(dāng)從守護(hù)程序發(fā)現(xiàn)任一從節(jié)點(diǎn)空閑時(shí),所述從守護(hù)程序?qū)⑷蝿?wù)請(qǐng)求發(fā)送至所述任一從節(jié)點(diǎn)對(duì)應(yīng)的主節(jié)點(diǎn),所述主節(jié)點(diǎn)的主守護(hù)程序查詢所述任一從節(jié)點(diǎn)上是否存在已執(zhí)行但未執(zhí)行完畢的map或reduce任務(wù);
是,則將所述已執(zhí)行但未執(zhí)行完畢的map或reduce任務(wù)分配給所述任一從節(jié)點(diǎn)執(zhí)行;
否,則查詢所述任一從節(jié)點(diǎn)上是否存在未執(zhí)行的map或reduce任務(wù);是,則將所述未執(zhí)行的map或reduce任務(wù)分配給所述任一從節(jié)點(diǎn)執(zhí)行;否,則將待執(zhí)行任務(wù)列表中排序最前的map或reduce任務(wù)分配給所述任一從節(jié)點(diǎn)執(zhí)行。
采用上述進(jìn)一步方案的有益效果是:提高了map或reduce任務(wù)的數(shù)據(jù)局部性。
進(jìn)一步,所述節(jié)點(diǎn)包括主節(jié)點(diǎn)和從節(jié)點(diǎn);
當(dāng)任一從節(jié)點(diǎn)上的reduce任務(wù)執(zhí)行失敗時(shí);所述任一從節(jié)點(diǎn)對(duì)應(yīng)的主節(jié)點(diǎn)的主守護(hù)程序,調(diào)用所述reduce任務(wù)對(duì)應(yīng)的map任務(wù)所在的從節(jié)點(diǎn),將所述map任務(wù)的輸出數(shù)據(jù)再次發(fā)送至所述任一從節(jié)點(diǎn);如果所述調(diào)用失敗,所述主守護(hù)程序?qū)⑺鰉ap任務(wù)分配給所述map任務(wù)所在的從節(jié)點(diǎn)以外的其它從節(jié)點(diǎn)重新執(zhí)行。
采用上述進(jìn)一步方案的有益效果是:保證了Hadoop穩(wěn)定性。
附圖說(shuō)明
圖1為本發(fā)明一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu)中節(jié)點(diǎn)的結(jié)構(gòu)框圖;
圖2為本發(fā)明一種基于虛擬存儲(chǔ)盤的Hadoop調(diào)度策略的流程圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
如圖1所示,本發(fā)明實(shí)施例1所述一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu),所述Hadoop架構(gòu)中的節(jié)點(diǎn)具有虛擬存儲(chǔ)盤和磁盤;
所述虛擬存儲(chǔ)盤,其用于存儲(chǔ)所述節(jié)點(diǎn)上map和/或reduce任務(wù)對(duì)應(yīng)緩存的溢出數(shù)據(jù);
所述磁盤,其用于當(dāng)所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)達(dá)到所述虛擬存儲(chǔ)盤的門限時(shí),存儲(chǔ)所述溢出數(shù)據(jù)。
本發(fā)明實(shí)施例2所述一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu),在實(shí)施例1的基礎(chǔ)上,所述虛擬存儲(chǔ)盤配置有tmpfs文件系統(tǒng)。
本發(fā)明實(shí)施例3所述一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu),在實(shí)施例1或2的基礎(chǔ)上,所述虛擬存儲(chǔ)盤未達(dá)到所述門限的區(qū)域劃分有用于存儲(chǔ)Hadoop輸入輸出數(shù)據(jù)的空間。
本發(fā)明實(shí)施例4所述一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu),在實(shí)施例1至3的任一實(shí)施例的基礎(chǔ)上,所述門限包括第一門限和第二門限,所述第一門限低于所述第二門限。
本發(fā)明實(shí)施例5所述一種基于虛擬存儲(chǔ)盤的Hadoop調(diào)度策略,采用上述實(shí)施例1或2所述一種基于虛擬存儲(chǔ)盤的Hadoop架構(gòu);將所述節(jié)點(diǎn)上map和/或reduce任務(wù)對(duì)應(yīng)緩存的溢出數(shù)據(jù)存儲(chǔ)于所述虛擬存儲(chǔ)盤,且當(dāng)所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)達(dá)到所述虛擬存儲(chǔ)盤的門限時(shí),將所述溢出數(shù)據(jù)存儲(chǔ)于所述磁盤。
本發(fā)明實(shí)施例6所述一種基于虛擬存儲(chǔ)盤的Hadoop調(diào)度策略,在實(shí)施例5的基礎(chǔ)上,所述虛擬存儲(chǔ)盤未達(dá)到所述門限的區(qū)域劃分有用于存儲(chǔ)Hadoop輸入輸出數(shù)據(jù)的空間;
將Hadoop輸入輸出數(shù)據(jù)存儲(chǔ)于所述空間。
本發(fā)明實(shí)施例7所述一種基于虛擬存儲(chǔ)盤的Hadoop調(diào)度策略,在實(shí)施例5或6的基礎(chǔ)上,所述門限包括第一門限和第二門限,所述第一門限低于所述第二門限;
當(dāng)所述節(jié)點(diǎn)上map或reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生溢出數(shù)據(jù)時(shí),如圖2所示,進(jìn)行如下操作:
步驟1,判斷所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)是否達(dá)到所述虛擬存儲(chǔ)盤的第一門限;是,則執(zhí)行步驟2;否,則執(zhí)行步驟7;
步驟2,判斷所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)是否達(dá)到所述虛擬存儲(chǔ)盤的第二門限;是,則執(zhí)行步驟3;否,則執(zhí)行步驟6;
步驟3,將所述虛擬存儲(chǔ)盤已存儲(chǔ)的執(zhí)行完畢時(shí)刻最接近當(dāng)前時(shí)刻的map或reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù)轉(zhuǎn)移到所述磁盤;
步驟4,再次判斷所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)是否達(dá)到所述虛擬存儲(chǔ)盤的第二門限;是,則返回執(zhí)行步驟3,否,則執(zhí)行步驟5;
步驟5,再次判斷所述虛擬存儲(chǔ)盤已存儲(chǔ)的數(shù)據(jù)是否達(dá)到所述虛擬存儲(chǔ)盤的第一門限;是,則執(zhí)行步驟6,否則執(zhí)行步驟7;
步驟6,判斷所述虛擬存儲(chǔ)盤是否存儲(chǔ)有所述map或reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù);是,則執(zhí)行步驟7;否,則將所述溢出數(shù)據(jù)存儲(chǔ)于所述磁盤,并結(jié)束所述操作;
步驟7,將所述溢出數(shù)據(jù)存儲(chǔ)于所述虛擬存儲(chǔ)盤,并結(jié)束所述操作。
本發(fā)明實(shí)施例8所述一種基于虛擬存儲(chǔ)盤的Hadoop調(diào)度策略,在實(shí)施例7的基礎(chǔ)上,所述步驟3包括如下步驟:
步驟31,判斷所述虛擬存儲(chǔ)盤是否存儲(chǔ)有執(zhí)行完畢的reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù);是,則執(zhí)行步驟32;否,則執(zhí)行步驟33;
步驟32,將所述虛擬存儲(chǔ)盤已存儲(chǔ)的執(zhí)行完畢時(shí)刻最接近當(dāng)前時(shí)刻的reduce任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù)轉(zhuǎn)移到所述磁盤,并執(zhí)行步驟4;
步驟33,將所述虛擬存儲(chǔ)盤已存儲(chǔ)的執(zhí)行完畢時(shí)刻最接近當(dāng)前時(shí)刻的map任務(wù)對(duì)應(yīng)緩存產(chǎn)生的溢出數(shù)據(jù)轉(zhuǎn)移到所述磁盤,并執(zhí)行步驟4。
本發(fā)明實(shí)施例9所述一種基于虛擬存儲(chǔ)盤的Hadoop調(diào)度策略,在實(shí)施例5至8任一實(shí)施例的基礎(chǔ)上,所述節(jié)點(diǎn)包括主節(jié)點(diǎn)和從節(jié)點(diǎn);
當(dāng)從守護(hù)程序發(fā)現(xiàn)任一從節(jié)點(diǎn)空閑時(shí),所述從守護(hù)程序?qū)⑷蝿?wù)請(qǐng)求發(fā)送至所述任一從節(jié)點(diǎn)對(duì)應(yīng)的主節(jié)點(diǎn),所述主節(jié)點(diǎn)的主守護(hù)程序查詢所述任一從節(jié)點(diǎn)上是否存在已執(zhí)行但未執(zhí)行完畢的map或reduce任務(wù);
是,則將所述已執(zhí)行但未執(zhí)行完畢的map或reduce任務(wù)分配給所述任一從節(jié)點(diǎn)執(zhí)行;
否,則查詢所述任一從節(jié)點(diǎn)上是否存在未執(zhí)行的map或reduce任務(wù);是,則將所述未執(zhí)行的map或reduce任務(wù)分配給所述任一從節(jié)點(diǎn)執(zhí)行;否,則將待執(zhí)行任務(wù)列表中排序最前的map或reduce任務(wù)分配給所述任一從節(jié)點(diǎn)執(zhí)行。
本發(fā)明實(shí)施例10所述一種基于虛擬存儲(chǔ)盤的Hadoop調(diào)度策略,在實(shí)施例5至9任一實(shí)施例的基礎(chǔ)上,所述節(jié)點(diǎn)包括主節(jié)點(diǎn)和從節(jié)點(diǎn);
當(dāng)任一從節(jié)點(diǎn)上的reduce任務(wù)執(zhí)行失敗時(shí);所述任一從節(jié)點(diǎn)對(duì)應(yīng)的主節(jié)點(diǎn)的主守護(hù)程序,調(diào)用所述reduce任務(wù)對(duì)應(yīng)的map任務(wù)所在的從節(jié)點(diǎn),將所述map任務(wù)的輸出數(shù)據(jù)再次發(fā)送至所述任一從節(jié)點(diǎn);如果所述調(diào)用失敗,所述主守護(hù)程序?qū)⑺鰉ap任務(wù)分配給所述map任務(wù)所在的從節(jié)點(diǎn)以外的其它從節(jié)點(diǎn)重新執(zhí)行。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。