一種基于分布式文件系統(tǒng)的數(shù)據(jù)塊分配方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明是基于分布式文件系統(tǒng),以結(jié)點(diǎn)的網(wǎng)絡(luò)距離和負(fù)載均衡為代價(jià)把數(shù)據(jù)塊分 配到數(shù)據(jù)倉(cāng)庫(kù)的分配方法。
【背景技術(shù)】
[0002] 由于Hadoop環(huán)境下分布式文件系統(tǒng)中的數(shù)據(jù)不支持類似于DBMS的分析功能,因 此,需要將HDFS中的數(shù)據(jù)迀移到支持類似于SQL的分布式數(shù)據(jù)倉(cāng)庫(kù)中。Yu Xu等人提出了 基于Edmonds-Karp的數(shù)據(jù)塊分配方案但是該算法對(duì)于未分配的數(shù)據(jù)塊只是隨機(jī)的將其分 配到的結(jié)點(diǎn)中,未考慮結(jié)點(diǎn)之間的網(wǎng)絡(luò)距離和負(fù)載均衡等因素,而且,運(yùn)用Edmonds-Karp 方法求解網(wǎng)絡(luò)流的最大流時(shí)效率比較低。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明要解決的技術(shù)問題是:減少被迀移到遠(yuǎn)程MySQL結(jié)點(diǎn)的HDFS數(shù)據(jù)塊個(gè)數(shù), 同時(shí)以最小的代價(jià)將HDFS數(shù)據(jù)塊均勻地分配到MySQL結(jié)點(diǎn)上。
[0004] 為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案是提供了 一種基于分布式文件系統(tǒng)的 數(shù)據(jù)塊分配方法,其特征在于,包括以下步驟:
[0005] 步驟1、根據(jù)分配問題構(gòu)造數(shù)據(jù)塊的初始分配圖G ;
[0006] 步驟2、初始化任意兩個(gè)結(jié)點(diǎn)之間的網(wǎng)絡(luò)距離,其中,第i個(gè)數(shù)據(jù)塊Bi和第j個(gè) MySQL結(jié)點(diǎn)Mj之間的網(wǎng)絡(luò)距離d(i,j)為:
[0007]
【主權(quán)項(xiàng)】
1. 一種基于分布式文件系統(tǒng)的數(shù)據(jù)塊分配方法,其特征在于,包括以下步驟: 步驟1、根據(jù)分配問題構(gòu)造數(shù)據(jù)塊的初始分配圖G ; 步驟2、初始化任意兩個(gè)結(jié)點(diǎn)之間的網(wǎng)絡(luò)距離,其中,第i個(gè)數(shù)據(jù)塊Bi和第j個(gè)MySQL 結(jié)點(diǎn)Mj之間的網(wǎng)絡(luò)距離d(i,j)為:
步驟3、基于步驟2得到的網(wǎng)絡(luò)距離根據(jù)最短增廣路算法求解初始分配圖G的最大流; 步驟4、根據(jù)步驟3得到的最大流,判斷是否存在未分配的數(shù)據(jù)塊,如果存在,則取出所 有未分配的數(shù)據(jù)塊,組成集合UnBlocks,然后跳轉(zhuǎn)到步驟5,否則,跳轉(zhuǎn)到步驟6 ; 步驟5、如果存在數(shù)據(jù)塊個(gè)數(shù)小于a的MySQL結(jié)點(diǎn),則取出這些結(jié)點(diǎn),稱作結(jié)點(diǎn)集合M, 否則,取出數(shù)據(jù)塊個(gè)數(shù)等于a的MySQL結(jié)點(diǎn),同樣稱作結(jié)點(diǎn)集合M,從集合UnBlocks中隨機(jī) 取出一個(gè)數(shù)據(jù)塊,稱作數(shù)據(jù)塊UB,選擇一個(gè)與數(shù)據(jù)塊UB所在結(jié)點(diǎn)的網(wǎng)絡(luò)代價(jià)最小的MySQL 結(jié)點(diǎn),稱作MySQL結(jié)點(diǎn)MinM,然后將數(shù)據(jù)塊UB分配給MySQL結(jié)點(diǎn)MinM,最后從結(jié)點(diǎn)集合M 中刪除MySQL結(jié)點(diǎn)MinM,從集合UnBlocks中刪除數(shù)據(jù)塊UB,跳轉(zhuǎn)到步驟4,其中: 第i個(gè)數(shù)據(jù)塊Bi和第j個(gè)MySQL結(jié)點(diǎn)Mj之間的網(wǎng)絡(luò)代價(jià)cost (i,j)為: cost (i,j) = w*d(i,j) +(I-W) load (j),式中,w 為參數(shù),load (j)為第 j 個(gè) MySQL 結(jié)點(diǎn) Mj的負(fù)載能力; 步驟6、如果存在數(shù)據(jù)塊個(gè)數(shù)小于a的MySQL結(jié)點(diǎn),則取出這些結(jié)點(diǎn),稱作結(jié)點(diǎn)集合 M1,然后從結(jié)點(diǎn)集合Ml中隨機(jī)取出一個(gè)結(jié)點(diǎn),稱作結(jié)點(diǎn)RM,接下來,從數(shù)據(jù)塊個(gè)數(shù)為a+Ι的 MySQL結(jié)點(diǎn)中取出一個(gè)與結(jié)點(diǎn)RM的網(wǎng)絡(luò)代價(jià)最小的數(shù)據(jù)塊,稱為數(shù)據(jù)塊MinB,最后將數(shù)據(jù) 塊MinB重新分配給結(jié)點(diǎn)RM,重復(fù)步驟6,否則算法終止。
2. 如權(quán)利要求1所述的一種基于分布式文件系統(tǒng)的數(shù)據(jù)塊分配方法,其特征在于,所 述第j個(gè)MySQL結(jié)點(diǎn)Mj的負(fù)載能力load (j)為第j個(gè)MySQL結(jié)點(diǎn)Mj的當(dāng)前數(shù)據(jù)塊的個(gè)數(shù)。
【專利摘要】本發(fā)明要解決的技術(shù)問題是:減少被遷移到遠(yuǎn)程MySQL結(jié)點(diǎn)的HDFS數(shù)據(jù)塊個(gè)數(shù),同時(shí)以最小的代價(jià)將HDFS數(shù)據(jù)塊均勻地分配到MySQL結(jié)點(diǎn)上。為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案是提供了一種基于分布式文件系統(tǒng)的數(shù)據(jù)塊分配方法。本發(fā)明在滿足數(shù)據(jù)塊均勻分配的約束條件下,使得被分配到遠(yuǎn)程結(jié)點(diǎn)的HDFS數(shù)據(jù)塊個(gè)數(shù)盡可能的少,同時(shí)使得在最短的時(shí)間內(nèi)傳輸?shù)腍DFS數(shù)據(jù)塊個(gè)數(shù)最多,在時(shí)間復(fù)雜度上更低,且性能更高,分配方案所花費(fèi)的網(wǎng)絡(luò)代價(jià)更低,更合理,具有較高的應(yīng)用價(jià)值。
【IPC分類】G06F17-30
【公開號(hào)】CN104834741
【申請(qǐng)?zhí)枴緾N201510259620
【發(fā)明人】李繼云, 孫莉, 張嬌艷, 何剛, 樂嘉錦, 施巍, 呂俊濤
【申請(qǐng)人】東華大學(xué)
【公開日】2015年8月12日
【申請(qǐng)日】2015年5月20日