本發(fā)明涉及移動通信網(wǎng)絡(luò)大數(shù)據(jù)優(yōu)化和規(guī)劃
技術(shù)領(lǐng)域:
,具體涉及一種基于權(quán)重因子的HadoopHDFS數(shù)據(jù)塊分布優(yōu)化算法。
背景技術(shù):
:HadoopHDFS副本技術(shù)即分布式數(shù)據(jù)復(fù)制技術(shù),是分布式計算的一個重要組成部分。如圖1所示,該技術(shù)允許數(shù)據(jù)在多個服務(wù)器端共享,一個本地服務(wù)器可以存取不同物理地點(diǎn)的遠(yuǎn)程服務(wù)器上的數(shù)據(jù),也可以使所有的服務(wù)器均持有數(shù)據(jù)的拷貝。塊副本存放位置的選擇嚴(yán)重影響HDFS的可靠性和性能。HDFS采用機(jī)架敏感(rackawareness)的副本存放策略來提高數(shù)據(jù)的可靠性、可用性和網(wǎng)絡(luò)帶寬的利用率。一般情況下復(fù)制因子(文件的副本數(shù))為3,HDFS的副本放置策略是:將第一個副本放在本地節(jié)點(diǎn),將第二個副本放到本地機(jī)架上的另外一個節(jié)點(diǎn),而將第三個副本放到不同機(jī)架上的節(jié)點(diǎn)。上述的現(xiàn)有技術(shù)方案存在如下問題:第一是,HDFS的默認(rèn)副本放置策略是一個隨機(jī)選擇策略,副本放置的最終狀態(tài)很難被控制。其具體表現(xiàn)如下:1)其是利用將副本放置在不同的機(jī)架上來達(dá)到高可靠性和數(shù)據(jù)塊的均勻分布存儲的,但如果數(shù)據(jù)中心只有一個機(jī)架,那么該副本放置策略就退化為一個隨機(jī)選擇策略,數(shù)據(jù)塊的均勻分布和可靠性就很難被保證。2)其并沒有考慮到節(jié)點(diǎn)負(fù)載的情況,即使有一個節(jié)點(diǎn)的負(fù)載遠(yuǎn)高于其他節(jié)點(diǎn),按照默認(rèn)的副本放置策略,這個節(jié)點(diǎn)還是有可能被持續(xù)的寫入數(shù)據(jù)。3)其主要是對前三個副本的放置位置做出了考慮,如果需要放置更多的副本,則后面的副本放置會采用隨機(jī)選擇的策略。第二是,當(dāng)然在HDFS系統(tǒng)中也有個叫均衡器(Balancer)的守護(hù)進(jìn)程。它會將數(shù)據(jù)塊從負(fù)載較高的節(jié)點(diǎn)移動到負(fù)載較低的節(jié)點(diǎn)上,從而達(dá)到數(shù)據(jù)塊重新分配的目的,最終使得整個集群分布均衡。雖然均衡器能在一定程度上解決問題,但是它也是存在缺陷的:1)它對于集群數(shù)據(jù)塊均衡的調(diào)節(jié)具有滯后性。2)均衡器的調(diào)節(jié)和數(shù)據(jù)塊的移動都需要一定資源的消耗。第三是,Hadoop集群的建設(shè)和擴(kuò)容都是分階段進(jìn)行的,隨著硬件的升級換代,服務(wù)器的配置必然會出現(xiàn)不同的配置情況。差異主要集中在CPU和硬盤上。比如:1)主流采用Inter的CPU,其中8C/10C主頻和緩存差別大,會影響Datanode處理性能,性能強(qiáng)的等待弱的。2)SATA數(shù)據(jù)盤的容量越來越大,目前主流的規(guī)格:單SATA盤7200RPM4TB。Hadoop集群數(shù)據(jù)自動均衡后,造成部分服務(wù)器的大容量磁盤空間浪費(fèi),無法使用。HDFS缺省的數(shù)據(jù)存儲策略,會采用同等的方式來選擇服務(wù)器,算法不夠靈活造成分配不均勻。因此,最終會使得所有Datanode服務(wù)器的空間使用基本相同。這樣會使得單節(jié)點(diǎn)磁盤空間總量小的服務(wù)器,其空間就會先滿。當(dāng)磁盤空間占用滿了之后,集群會采用失敗重試(重選)的方式來解決,這會導(dǎo)致很多上層應(yīng)用出現(xiàn)訪問HDFS超時的情況。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于針對現(xiàn)有技術(shù)的缺陷和不足,提供基于權(quán)重因子的HadoopHDFS數(shù)據(jù)塊分布優(yōu)化算法,采用一種實(shí)時數(shù)據(jù)塊分布算法,對HDFS的副本放置策略做出適當(dāng)?shù)膬?yōu)化,使數(shù)據(jù)落地過程中始終達(dá)到集群數(shù)據(jù)塊負(fù)載均衡,并且盡量減少此過程帶來的額外資源消耗。本發(fā)明所述的基于權(quán)重因子的HadoopHDFS數(shù)據(jù)塊分布優(yōu)化算法,它采用如下的方法步驟:步驟一:采用如下的選擇策略:chooseLocalStorage(本地)到chooseLocalRack(本機(jī)架)到chooseRemoteRack(遠(yuǎn)端機(jī)架)最后到chooseRandom(全集群);步驟二:在步驟一的基礎(chǔ)上,在現(xiàn)有技術(shù)的chooseRandom算法的基礎(chǔ)上,引入一個權(quán)重來調(diào)整隨機(jī)數(shù)在不同DataNode上的分布策略,將原有chooseRandom算法改造成如圖5所示算法;步驟三:步驟二中的陳述的權(quán)重是指:把可用存儲容量作為隨機(jī)選擇的一個權(quán)重因子,節(jié)點(diǎn)權(quán)重=1+(權(quán)重系數(shù)*存儲容量可用百分比);因而可用容量百分比大的節(jié)點(diǎn)就更容易被選擇作為存儲節(jié)點(diǎn)。步驟四:步驟三中所陳述的權(quán)重可由空間利用率來決定,通過權(quán)重分配算法進(jìn)行計算,其線性調(diào)整權(quán)重采用如下的計算公式:權(quán)重的大小和剩余空間利用率成線性關(guān)系:W=1+(r*c)。本發(fā)明有益效果為:本發(fā)明所述的基于權(quán)重因子的HadoopHDFS數(shù)據(jù)塊分布優(yōu)化算法,采用一種實(shí)時數(shù)據(jù)塊分布算法,對HDFS的副本放置策略做出適當(dāng)?shù)膬?yōu)化,使數(shù)據(jù)落地過程中始終達(dá)到集群數(shù)據(jù)塊負(fù)載均衡,并且盡量減少此過程帶來的額外資源消耗。【附圖說明】此處所說明的附圖是用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,但并不構(gòu)成對本發(fā)明的不當(dāng)限定,在附圖中:圖1是本發(fā)明
背景技術(shù):
中HadoopHDFS副本技術(shù)示意圖;圖2是本發(fā)明中的選擇策略的拓?fù)浣Y(jié)構(gòu)示意圖;圖3是本發(fā)明的測試中動態(tài)變化的權(quán)重示意圖;圖4是本發(fā)明中的權(quán)重/可用容量百分比走勢示意圖;圖5是本發(fā)明的算法流程圖;圖6是傳統(tǒng)的chooseRandom算法的流程圖?!揪唧w實(shí)施方式】下面將結(jié)合附圖以及具體實(shí)施例來詳細(xì)說明本發(fā)明,其中的示意性實(shí)施例以及說明僅用來解釋本發(fā)明,但并不作為對本發(fā)明的限定。本具體實(shí)施方式所述的基于權(quán)重因子的HadoopHDFS數(shù)據(jù)塊分布優(yōu)化算法,它采用如下的方法步驟:步驟一:如圖2所示,采用如下的選擇策略:chooseLocalStorage(本地)到chooseLocalRack(本機(jī)架)到chooseRemoteRack(遠(yuǎn)端機(jī)架)最后到chooseRandom(全集群);步驟二:在步驟一的基礎(chǔ)上,在現(xiàn)有技術(shù)的chooseRandom算法的基礎(chǔ)上,引入一個權(quán)重來調(diào)整隨機(jī)數(shù)在不同DataNode上的分布策略,將原有chooseRandom算法改造成如圖5所示算法;步驟三:步驟二中的陳述的權(quán)重是指:把可用存儲容量作為隨機(jī)選擇的一個權(quán)重因子,節(jié)點(diǎn)權(quán)重=1+(權(quán)重系數(shù)*存儲容量可用百分比);因而可用容量百分比大的節(jié)點(diǎn)就更容易被選擇作為存儲節(jié)點(diǎn)。步驟四:步驟三中所陳述的權(quán)重可由空間利用率來決定,通過權(quán)重分配算法進(jìn)行計算,其線性調(diào)整權(quán)重采用如下的計算公式:權(quán)重的大小和剩余空間利用率成線性關(guān)系:W=1+(r*c)。本發(fā)明的設(shè)計思想原理如下:本發(fā)明是在一種在原本chooseRandom算法的基礎(chǔ)上進(jìn)行優(yōu)化改造方法,原來的chooseRandom算法是如圖6所示算法;上述算法中,1)缺省是隨機(jī)的,不考慮任何其它因素。2)通過一個均勻分布的隨機(jī)數(shù)來選擇集群中的一個DataNode。本發(fā)明改造后的算法涉及以下方面:1)引入一個權(quán)重調(diào)整隨機(jī)數(shù)在不同DataNode上的分布策略;2)權(quán)重由可用空間利用率來決定;3)改動過的算法是把可用存儲容量作為隨機(jī)選擇的一個權(quán)重因子,節(jié)點(diǎn)權(quán)重=1+(權(quán)重系數(shù)*存儲容量可用百分比)。這樣可用容量百分比大的節(jié)點(diǎn)就更容易被選擇作為存儲節(jié)點(diǎn)。這個功能是被系統(tǒng)層面調(diào)用,每次寫文件都會涉及調(diào)用如下程序流程:選擇算法只是每次操作單次選擇,若考慮空間利用率或其他動態(tài)參數(shù),則選擇算法的結(jié)果也會是動態(tài)變化的。本發(fā)明里權(quán)重分配算法:1)線性調(diào)整權(quán)重:權(quán)重的大小和剩余空間利用率成線性關(guān)系W=1+(r*c);Weight(nodeo):functiontocomputetheweightofanodew=1+(r*c)Wherewistheoutputweightofthenodeo,cpresentsfreevolumeofthenodeo,thevalueofcisbetween0and1risauserinputthreshold,thevalueofrisbetween0and10.Withthegrowthofr,thenodewithhighervolumewillgetlargerweight.Ifvalueofris0thenvolumeofthenodewillhavenoeffectonweightofnode.2)使用效果:相對來說,整體空間利用率有提升隨著數(shù)據(jù)的積累,容量小的主機(jī)權(quán)重在變小,且變化速度更快3)說明:如圖3所示,本次測試時,R=10;動態(tài)變化的權(quán)重,并不能保證全部空間可以被100%利用。4)本發(fā)明的測試數(shù)據(jù)對比如下:HOSThost132host155host156host157host158總?cè)萘?G)total8101370165011001375測試前used%1.64%13.21%10.97%1.58%12.44%加權(quán)算法used%98%78%72%92%72%缺省算法預(yù)計used%100%59%49%74%59%本發(fā)明中著重提出了,在chooseRandom算法中把可用存儲容量作為隨機(jī)選擇的一個權(quán)重因子,節(jié)點(diǎn)權(quán)重=1+(權(quán)重系數(shù)*存儲容量可用百分比)。這樣可用容量百分比大的節(jié)點(diǎn)就更容易被選擇作為存儲節(jié)點(diǎn),從而使得本算法優(yōu)于現(xiàn)有的計算方法。本發(fā)明與現(xiàn)有技術(shù)方案相比,其技術(shù)優(yōu)點(diǎn)如下:1)通過調(diào)整算法,可以相對改善不同服務(wù)器的空間利用率情況。2)還可以根據(jù)現(xiàn)場的數(shù)據(jù)特點(diǎn)調(diào)整算法,改變空間利用率的均衡情況。3)本次改變只是調(diào)整了選擇算法本身,與寫文件等操作無關(guān),并不會引入性能問題。本發(fā)明有益效果為:本發(fā)明所述的基于權(quán)重因子的HadoopHDFS數(shù)據(jù)塊分布優(yōu)化算法,采用一種實(shí)時數(shù)據(jù)塊分布算法,對HDFS的副本放置策略做出適當(dāng)?shù)膬?yōu)化,使數(shù)據(jù)落地過程中始終達(dá)到集群數(shù)據(jù)塊負(fù)載均衡,并且盡量減少此過程帶來的額外資源消耗。以上所述僅是本發(fā)明的較佳實(shí)施方式,故凡依本發(fā)明專利申請范圍所述的構(gòu)造、特征及原理所做的等效變化或修飾,均包括于本發(fā)明專利申請范圍內(nèi)。當(dāng)前第1頁1 2 3