基于hdfs的副本平衡方法
【專利摘要】本發(fā)明公開了一種基于HDFS的副本平衡方法,其在集群配置項中設(shè)計抽象Performance類,并通過心跳信息收集各DataNode的性能數(shù)據(jù),在數(shù)據(jù)遷移時,DataNode的匹配除了需要符合現(xiàn)有Balancer程序的節(jié)點匹配規(guī)則外,還需要參考DataNode的性能指標(biāo)數(shù)據(jù),按照DataNode的性能評分和存儲量的比值進行評價,并在評價最優(yōu)和評價最差的DataNode之間進行匹配,使DataNode存放的數(shù)據(jù)量正比于DataNode的性能,提高HDFS分布式文件系統(tǒng)負載均衡能力,提升集群性能。在組建集群時,無需考慮集群中各節(jié)點配置的性能差異。
【專利說明】基于HDFS的副本平衡方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理控制【技術(shù)領(lǐng)域】,具體涉及一種基于HDFS的副本平衡方法。
【背景技術(shù)】
[0002] 近幾年來,隨著以用戶產(chǎn)生內(nèi)容為標(biāo)志的WEB2. 0時代的到來,博客、SNS、P2P、M、 圖片、視頻等應(yīng)用飛速發(fā)展,信息服務(wù)越來越貼近人們的生活,互聯(lián)網(wǎng)中的數(shù)據(jù)呈現(xiàn)出幾何 式的增長。雖然可以憑借超級計算機強大的計算能力和存儲能力可以滿足互聯(lián)網(wǎng)數(shù)據(jù)的計 算和存儲要求,但是其造價十分高昂,難以得到廣泛的應(yīng)用。為了以低廉的價格突破單機存 儲、計算、內(nèi)存等能力的限制,人們將目光投向了分布式系統(tǒng)。常見的分布式計算項目使用 閑置的計算機,通過Internet或以太網(wǎng)傳輸數(shù)據(jù),讓每臺計算機貢獻自己的計算能力和存 儲能力。
[0003] HDFS 是 Hadoop 的分布式文件系統(tǒng),是 Hadoop Distributed File System 的簡稱, 提供了一個高度容錯性和高吞吐量的海量數(shù)據(jù)存儲解決方案。HDFS將文件分為若干數(shù)據(jù) 塊,每個數(shù)據(jù)塊默認保存64MB數(shù)據(jù);同時,HDFS默認為每個數(shù)據(jù)塊保存3個副本,提高數(shù)據(jù) 的可靠性和讀取性能。HDFS典型的文件大小為GB級,此外,HDFS還支持千萬級別的文件數(shù) 量。
[0004] HDFS架構(gòu)基于一組特定的節(jié)點而構(gòu)建,包括數(shù)據(jù)節(jié)點DataNode和元數(shù)據(jù)節(jié)點 NameNode,NameNode在HDFS內(nèi)部提供元數(shù)據(jù)服務(wù),管理文件系統(tǒng)的命名空間,將所有的文 件和文件夾的元數(shù)據(jù)保存在一個文件系統(tǒng)樹中;DataNode為HDFS提供存儲塊,用來存儲數(shù) 據(jù)文件。HDFS通訊協(xié)議都是構(gòu)建在TCP/IP協(xié)議上,客戶端通過一個可配置的端口連接到 NameNode,通過 ClientProtocol 與 NameNode 交互,而 DataNode 是使用 DataNodeProtocol 與NameNode交互。再設(shè)計上,DataNode通過周期性的向NameNode發(fā)送心跳信息來保持 和NameNode的通信,信息包括數(shù)據(jù)塊的屬性,即數(shù)據(jù)塊屬于哪個文件、數(shù)據(jù)塊ID、修改時間 等。目前,HDFS已經(jīng)在各種大型在線服務(wù)和大型存儲系統(tǒng)中得到廣泛應(yīng)用,已經(jīng)成為各大 網(wǎng)站等在線服務(wù)公司的海量存儲事實標(biāo)準。
[0005] 雖然HDFS是一個優(yōu)秀的分布式文件系統(tǒng),但是其仍有許多不足,負載均衡問題就 是HDFS的一個弱項。HDFS集群非常容易出現(xiàn)機器與機器之間磁盤利用率不平衡的情況,t匕 如集群中添加新的數(shù)據(jù)節(jié)點。當(dāng)HDFS出現(xiàn)不平衡狀況的時候,將引發(fā)很多問題,比如MR程 序無法很好地利用本地計算的優(yōu)勢,機器之間無法達到更好的網(wǎng)絡(luò)帶寬使用率,機器磁盤 無法利用等等。在Hadoop中,包含一個Balancer程序,通過運行這個程序,可以使得HDFS 集群達到一個平衡的狀態(tài),開發(fā)人員在開發(fā)Balancer程序的時候,遵循了以下幾點原則:
[0006] 1、在執(zhí)行數(shù)據(jù)重分布的過程中,必須保證數(shù)據(jù)不出現(xiàn)丟失,不改變數(shù)據(jù)的備份數(shù), 不改變每一個rack中所具備的數(shù)據(jù)塊數(shù)量。
[0007] 2、系統(tǒng)管理員可以通過一條命令啟動數(shù)據(jù)重分布程序或者停止數(shù)據(jù)重分布程序。
[0008] 3、執(zhí)行數(shù)據(jù)塊遷移的進程,不能占用過多的系統(tǒng)資源,如網(wǎng)絡(luò)帶寬。
[0009] 4、數(shù)據(jù)重分布程序執(zhí)行時,不能影響NameNode的任務(wù)調(diào)度工作。
[0010] 5、數(shù)據(jù)重分布任務(wù)作為一個獨立的進程,與NameNode分開執(zhí)行,通常在另一臺 Rebalancer Server中執(zhí)行數(shù)據(jù)重分布進程。
[0011] Balancer程序的執(zhí)行包括如下步驟:
[0012] 步驟1、Rebalance Server從NameNode中獲取每一個DataNode磁盤使用情況。
[0013] 步驟2、Rebalance Server計算哪些機器需要將數(shù)據(jù)移動,哪些機器可以接受移動 的數(shù)據(jù),并且從NameNode中獲取需要移動的數(shù)據(jù)分布情況。
[0014] 步驟3、Rebalance Server計算出來可以將哪一臺機器的數(shù)據(jù)塊移動到另一臺機 器中去。
[0015] 步驟4、需要移動數(shù)據(jù)塊的機器將數(shù)據(jù)移動的目的機器上去,同時刪除自己機器上 的數(shù)據(jù)塊數(shù)據(jù)。
[0016] 步驟5、Rebalance Server獲取到本次數(shù)據(jù)移動的執(zhí)行結(jié)果,并繼續(xù)執(zhí)行這個過 程,一直沒有數(shù)據(jù)可以移動或者HDFS集群以及達到了平衡的標(biāo)準為止。
[0017] 現(xiàn)有的Balancer程序工作的方式在絕大多數(shù)情況中都是非常適合的;但其僅簡 單地考慮各節(jié)點磁盤使用率,并基于磁盤使用率確定遷移數(shù)據(jù)任務(wù),最終使各節(jié)點存放的 數(shù)據(jù)量正比于其磁盤容量。假設(shè)這樣一種情況:1、數(shù)據(jù)是3份備份;2、HDFS由2個rack組 成;3、2個rack中的機器磁盤配置不同,rackl中每一臺機器的磁盤空間為lTB,rack2中每 一臺機器的磁盤空間為10TB ;4、現(xiàn)在大多數(shù)數(shù)據(jù)的2份備份都存儲在第一個rack中。在 這樣的一種情況下,運行Balancer程序后,rackl中的磁盤剩余空間遠遠小于rack2,整個 HDFS集群中的數(shù)據(jù)依舊不平衡。而實際的大型集群中,很難保證集群中節(jié)點配置的一致性, 因此,需要開發(fā)新的基于HDFS的副本平衡方法。
【發(fā)明內(nèi)容】
[0018] 本發(fā)明所要解決的技術(shù)問題是提供一種基于HDFS的副本平衡方法,其能夠使得 DataNode存放的數(shù)據(jù)量正比于其性能。
[0019] 本發(fā)明解決技術(shù)問題所采用的技術(shù)方案是:
[0020] 基于HDFS的副本平衡方法,包括以下步驟:
[0021] 1)、集群配置:
[0022] 設(shè)計用于代表DataNode性能評價指標(biāo)的Performance類,Performance類提供一 個用于獲得對應(yīng)的性能數(shù)據(jù)的getPerformance方法;
[0023] 定義對應(yīng)DataNode各性能指標(biāo)的性能類,性能類是繼承Performance類的子類;
[0024] 在HDFS通訊協(xié)議的心跳信息中增加對應(yīng)性能類的性能指標(biāo)數(shù)據(jù);
[0025] 2)、數(shù)據(jù)收集:
[0026] DataNode通過getPerformance方法收集與各性能類對應(yīng)的性能指標(biāo)數(shù)據(jù);然后 由DataNode定時發(fā)送心跳信息,將上述與各性能類對應(yīng)的性能指標(biāo)數(shù)據(jù)發(fā)送給NameNode, 并由NameNode保存上述與各性能類對應(yīng)的性能指標(biāo)數(shù)據(jù);
[0027] 3)、執(zhí)行 Balancer 程序:
[0028] 3. 1、由 Rebalance Server 從 NameNode 中獲取各 DataNode 的性能指標(biāo)數(shù)據(jù);
[0029] 3. 2、根據(jù)獲取的性能指標(biāo)數(shù)據(jù),計算各DataNode性能評分;
[0030] 3. 3、計算各DataNode性能評分與其存儲量的比值α,以及各DataNode的α值的 平均值a avg ;
[0031] 3. 4、通過Balancer命令的threshold參數(shù)獲取允許的性能誤差范圍,根據(jù)a avg結(jié) 合threshold參數(shù)確定DataNode性能的目標(biāo)范圍;將α值優(yōu)于目標(biāo)范圍的DataNode、α 值在目標(biāo)范圍內(nèi)的DataNode以及α值差于目標(biāo)范圍的DataNode劃分為三 個隊列;
[0032] 3. 5、匹配DataNode,包括如下步驟:
[0033] 3. 5. 1、若 QmdOT 和 均非空,則將 QmdOT 中 DataNode 和 Q_ 中的 DataNode 進行 匹配;若QmdOT為空而非空,則將Qmid中性能最差的DataNode和中的DataNode進 行匹配;若QmdOT非空而為空,則將Qmid中性能最優(yōu)的DataNode與QmdOT中的DataNode 進行匹配;
[0034] 3. 5. 2、若3. 5. 1選取的兩DataNode符合Balancer程序的節(jié)點匹配規(guī)則,則執(zhí)行 DataNode的匹配,進入步驟3. 6,否則重復(fù)步驟3. 5. 1 ;
[0035] 3. 6、數(shù)據(jù)塊選擇:從待遷出DataNode中選擇數(shù)據(jù)塊,若數(shù)據(jù)塊符合Balancer程序 的數(shù)據(jù)塊選取規(guī)則,則執(zhí)行數(shù)據(jù)遷移任務(wù),否則重新選擇數(shù)據(jù)塊;
[0036] 3. 7、完成數(shù)據(jù)遷移任務(wù)后,重新計算遷出DataNode和遷入DataNode的α值,并 將兩者放入合適的隊列中;
[0037] 3. 8、重復(fù) 3. 5、3. 6 和 3. 7,直至 和 QmdOT 均為空。
[0038] 具體的,在集群配置步驟中定義的性能類包括用于獲得DataNode的CPU速度的 CpuPerformance類、用于獲得DataNode的內(nèi)存容量的MemoryPerformance類和用于獲得 DataNode 的磁盤容量的 DiskPerformance 類。
[0039] 進一步的,在集群配置步驟中分別配置各性能類對應(yīng)的權(quán)重;在步驟3. 1中,由 Rebalance Server從NameNode中的獲取各DataNode的性能指標(biāo)數(shù)據(jù)及各性能類對應(yīng)的權(quán) 重;在步驟3. 2計算各DataNode性能評分時,根據(jù)各性能對應(yīng)的性能指標(biāo)數(shù)據(jù)及其權(quán)重計 算各DataNode的性能評分。具體的,在所述步驟3. 2中,根據(jù)獲取的性能指標(biāo)數(shù)據(jù)和權(quán)重, 采用T0PSIS算法計算各DataNode性能的最優(yōu)值、最差值和貼近度,并以貼近度作為其性能 評分。
[0040] 本發(fā)明的有益效果是:在數(shù)據(jù)遷移時,DataNode的匹配除了需要符合現(xiàn)有 Balancer程序的節(jié)點匹配規(guī)則外,還需要參考DataNode的性能指標(biāo)數(shù)據(jù),按照DataNode的 性能評分和存儲量的比值進行評價,并在評價最優(yōu)和評價最差的DataNode之間進行匹配, 使DataNode存放的數(shù)據(jù)量正比于DataNode的性能,提高HDFS分布式文件系統(tǒng)負載均衡能 力,提升集群性能。在組建集群時,無需考慮集群中各節(jié)點配置的性能差異。
【專利附圖】
【附圖說明】
[0041] 圖1為本發(fā)明集群配置修改的簡要類圖;
[0042] 圖2為本發(fā)明的數(shù)據(jù)收集的流程示意圖;
[0043] 圖3為本發(fā)明的性能評分計算的流程示意圖;
[0044] 圖4為本發(fā)明的數(shù)據(jù)重新分布的匹配流程示意圖。
【具體實施方式】
[0045] 本發(fā)明的基于HDFS的副本平衡方法,包括集群配置、數(shù)據(jù)收集、執(zhí)行Balancer程 序三個部分,下面結(jié)合附圖和實施例對本發(fā)明進一步說明。
[0046] 1)、集群配置
[0047] 如圖1所示,設(shè)計用于代表DataNode性能評價指標(biāo)的Performance類, Performance類提供一個用于獲得對應(yīng)的性能數(shù)據(jù)的getPerformance方法。定義對應(yīng) DataNode各性能指標(biāo)的性能類,性能類是繼承Performance類的子類,具體的,性能類包括 用于獲得DataNode的CPU速度的CpuPerformance類、用于獲得DataNode的內(nèi)存容量的 MemoryPerformance類和用于獲得DataNode的磁盤容量的DiskPerformance類;修改HDFS 的通訊協(xié)議,在心跳信息中增加對應(yīng)性能類的性能指標(biāo)數(shù)據(jù),修改后HDFS的通訊協(xié)議所傳 輸?shù)臄?shù)據(jù)結(jié)構(gòu)如表1所示。
[0048] 表1、包括Performance類的心跳協(xié)議傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)
[0049]
【權(quán)利要求】
1. 基于HDFS的副本平衡方法,包括以下步驟: 1) 、集群配置: 設(shè)計用于代表DataNode性能評價指標(biāo)的Performance類,Performance類提供一個用 于獲得對應(yīng)的性能數(shù)據(jù)的getPerformance方法; 定義對應(yīng)DataNode各性能指標(biāo)的性能類,性能類是繼承Performance類的子類; 在HDFS通訊協(xié)議的心跳信息中增加對應(yīng)性能類的性能指標(biāo)數(shù)據(jù); 2) 、數(shù)據(jù)收集: DataNode通過getPerformance方法收集與各性能類對應(yīng)的性能指標(biāo)數(shù)據(jù);然后由 DataNode定時發(fā)送心跳信息,將上述與各性能類對應(yīng)的性能指標(biāo)數(shù)據(jù)發(fā)送給NameNode,并 由NameNode保存上述與各性能類對應(yīng)的性能指標(biāo)數(shù)據(jù); 3) 、執(zhí)行Balancer程序: 3. 1、由Rebalance Server從NameNode中獲取各DataNode的性能指標(biāo)數(shù)據(jù); 3. 2、根據(jù)獲取的性能指標(biāo)數(shù)據(jù),計算各DataNode性能評分; 3. 3、計算各DataNode性能評分與其存儲量的比值α,以及各DataNode的α值的平均 值 αavg ; 3. 4、通過Balancer命令的threshold參數(shù)獲取允許的性能誤差范圍,根據(jù)a avg結(jié)合 threshold參數(shù)確定DataNode性能的目標(biāo)范圍;將α值優(yōu)于目標(biāo)范圍的DataNode、α值 在目標(biāo)范圍內(nèi)的DataNode以及α值差于目標(biāo)范圍的DataNode劃分為 隊列; 3. 5、匹配DataNode,包括如下步驟: 3. 5. 1、若QmdOT和均非空,則將QmdOT中DataNode和Q_中的DataNode進行匹配; 若Qunto為空而非空,則將Qmid中性能最差的DataNode和QOTCT中的DataNode進行匹 配;若Qunto非空而為空,則將Q mid中性能最優(yōu)的DataNode與QmdOT中的DataNode進行 匹配; 3. 5. 2、若3. 5. 1選取的兩DataNode符合Balancer程序的節(jié)點匹配規(guī)則,則執(zhí)行 DataNode的匹配,進入步驟3. 6,否則重復(fù)步驟3. 5. 1 ; 3. 6、數(shù)據(jù)塊選擇:從待遷出DataNode中選擇數(shù)據(jù)塊,若數(shù)據(jù)塊符合Balancer程序的數(shù) 據(jù)塊選取規(guī)則,則執(zhí)行數(shù)據(jù)遷移任務(wù),否則重新選擇數(shù)據(jù)塊; 3. 7、完成數(shù)據(jù)遷移任務(wù)后,重新計算遷出DataNode和遷入DataNode的α值,并將兩 者放入合適的隊列中; 3. 8、重復(fù)3. 5、3. 6和3. 7,直至和QmdOT均為空。
2. 根據(jù)權(quán)利要求1所述的基于HDFS的副本平衡方法,其特征在于:在集群配置步 驟中定義的性能類包括用于獲得DataNode的CPU速度的CpuPerformance類、用于獲 得DataNode的內(nèi)存容量的MemoryPerformance類和用于獲得DataNode的磁盤容量的 DiskPerformance 類。
3. 根據(jù)權(quán)利要求1所述的基于HDFS的副本平衡方法,其特征在于:在集群配置步驟中 分別配置各性能類對應(yīng)的權(quán)重;在步驟3. 1中,由Rebalance Server首先從NameNode中的 獲取各DataNode的性能指標(biāo)數(shù)據(jù)及各性能類對應(yīng)的權(quán)重;在步驟3. 2計算各DataNode性 能評分時,根據(jù)各性能對應(yīng)的性能指標(biāo)數(shù)據(jù)及其權(quán)重計算各DataNode的性能評分。
4.根據(jù)權(quán)利要求3所述的基于HDFS的副本平衡方法,其特征在于:在所述步驟3. 2中, 根據(jù)獲取的性能指標(biāo)數(shù)據(jù)和權(quán)重,采用TOPSIS算法計算各DataNode性能的最優(yōu)值、最差值 和貼近度,并以貼近度作為其性能評分。
【文檔編號】G06F17/30GK104063501SQ201410321195
【公開日】2014年9月24日 申請日期:2014年7月7日 優(yōu)先權(quán)日:2014年7月7日
【發(fā)明者】羅光春, 田玲, 陳愛國, 舒康 申請人:電子科技大學(xué)