分布式文件系統(tǒng)調(diào)整本的存儲均衡策略_第1頁
分布式文件系統(tǒng)調(diào)整本的存儲均衡策略_第2頁
分布式文件系統(tǒng)調(diào)整本的存儲均衡策略_第3頁
分布式文件系統(tǒng)調(diào)整本的存儲均衡策略_第4頁
分布式文件系統(tǒng)調(diào)整本的存儲均衡策略_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

分布式文件系統(tǒng)調(diào)整本的存儲均衡策略

為了提高系統(tǒng)的可靠性,解決由于不預(yù)測災(zāi)難和硬件錯(cuò)誤系統(tǒng)造成的損失,云存儲系統(tǒng)使用分布式副技術(shù)來存儲數(shù)據(jù)。哥倫比亞大學(xué)的Ko等提出了一種自穩(wěn)定、全分布、異步可升級的算法來放置副本,算法的目標(biāo)是在網(wǎng)絡(luò)中的結(jié)點(diǎn)上放置數(shù)據(jù)對象的多個(gè)副本,從網(wǎng)絡(luò)中的任意一個(gè)結(jié)點(diǎn)出發(fā)都能夠通過最短的路徑訪問到任意的副本;加州大學(xué)伯克利分校的Chen等開發(fā)設(shè)計(jì)了一個(gè)動態(tài)、高效及可升級的內(nèi)容分發(fā)網(wǎng)絡(luò)SCAN(sealablecontentaeeessnetwork).SCAN采用Testry進(jìn)行路由和定位,使用沿路緩存算法進(jìn)行副本放置;德克薩斯大學(xué)的MadhukarR等提出了一種協(xié)作的緩存放置算法,即給定一組協(xié)作的緩存、緩存之間的網(wǎng)絡(luò)距離以及從每個(gè)緩存到每個(gè)對象的訪問頻率的預(yù)測,決定在哪里放置對象,從而使平均訪問開銷最小化;Karger等提出了能適應(yīng)節(jié)點(diǎn)數(shù)量的動態(tài)變化的一致性哈希算法,但它只適用于存儲節(jié)點(diǎn)同構(gòu)的情況,當(dāng)節(jié)點(diǎn)的存儲容量和處理能力有差異時(shí),數(shù)據(jù)將不能夠均勻地分布到系統(tǒng)當(dāng)中.云存儲系統(tǒng)的典型代表是Hdfs,它需將每個(gè)存儲數(shù)據(jù)塊的副本放置在多個(gè)機(jī)架的多個(gè)節(jié)點(diǎn)上,存儲數(shù)據(jù)塊的副本放置策略將直接影響數(shù)據(jù)存儲的均衡性以及訪問數(shù)據(jù)塊的速度.Hdfs系統(tǒng)采用隨機(jī)選擇節(jié)點(diǎn)的副本放置策略,該策略在系統(tǒng)運(yùn)行一段時(shí)間后會造成數(shù)據(jù)分布不均衡的問題,降低數(shù)據(jù)的可靠性和讀取性能.因此,本文提出了基于節(jié)點(diǎn)使用率選擇存儲節(jié)點(diǎn)的Hdfs副本放置策略的改進(jìn)算法,引入了客戶端存儲閾值,允許副本在放置過程中穿越多個(gè)機(jī)架,以實(shí)現(xiàn)各節(jié)點(diǎn)數(shù)據(jù)存儲的相對均衡,實(shí)驗(yàn)驗(yàn)證了改進(jìn)策略的有效性.1在缺少統(tǒng)一的上支持統(tǒng)一的hdfs集群內(nèi)容為研究Hdfs的副本放置策略,先介紹相關(guān)概念如下:1)獲取集群信息:Hdfs的NetworkTopology類實(shí)現(xiàn)對其拓?fù)浣Y(jié)構(gòu)的操縱,該類中包含添加、刪除和獲取節(jié)點(diǎn)信息等函數(shù).比如,Hdfs通過調(diào)用NetworkTopology類的chooseRandom來隨機(jī)獲取一個(gè)節(jié)點(diǎn)的信息,通過調(diào)用getNumOfLeaves來獲取所有節(jié)點(diǎn)的數(shù)目.2)集群拓?fù)?機(jī)架與節(jié)點(diǎn)):將Hdfs部署在多臺服務(wù)器上就形成了一個(gè)Hdfs的集群.如樹狀拓?fù)浣Y(jié)構(gòu)的Hdfs集群,樹根是一個(gè)大型交換機(jī),交換機(jī)之下可以是多個(gè)二級交換機(jī),可以把每一個(gè)二級交換機(jī)設(shè)置為一個(gè)機(jī)架,每個(gè)機(jī)架之下連接多個(gè)節(jié)點(diǎn).Hdfs管理員可編寫腳本文件來配置每個(gè)節(jié)點(diǎn)屬于哪一個(gè)機(jī)架.在進(jìn)行機(jī)架配置時(shí),應(yīng)將相同交換機(jī)下的節(jié)點(diǎn)設(shè)置為同一個(gè)機(jī)架就可實(shí)現(xiàn)合理的配置.一般把組成Hdfs集群的每一個(gè)服務(wù)器稱為一個(gè)節(jié)點(diǎn),對文件讀寫的客戶端而言,其所在節(jié)點(diǎn)稱為本地節(jié)點(diǎn),其他節(jié)點(diǎn)為遠(yuǎn)程節(jié)點(diǎn).就某一具體節(jié)點(diǎn)而言,稱該節(jié)點(diǎn)所在的機(jī)架為本地機(jī)架,其他機(jī)架為遠(yuǎn)程機(jī)架.3)隨機(jī)函數(shù):Hdfs的NetworkTopology類中有保存所有節(jié)點(diǎn)信息的ArrayList.Hdfs在選擇副本放置位置時(shí),調(diào)用隨機(jī)選擇函數(shù)chooseRandom,從n中隨機(jī)選擇一個(gè)數(shù)對應(yīng)ArrayList中的節(jié)點(diǎn)就被選中為副本存儲的節(jié)點(diǎn).該函數(shù)是只有2個(gè)參數(shù)的重載函數(shù),第1個(gè)參數(shù)是選擇節(jié)點(diǎn)的范圍,它可以是某個(gè)機(jī)架,默認(rèn)為整個(gè)集群;第2個(gè)參數(shù)是不能選擇節(jié)點(diǎn)的范圍,默認(rèn)為空,可以設(shè)置為某個(gè)機(jī)架.4)Hdfs在進(jìn)行副本選擇過程中,有可能出現(xiàn)參數(shù)不合格或內(nèi)存異常等現(xiàn)象,一旦出現(xiàn)運(yùn)行異常,chooseRandom函數(shù)就會把異常信息返回客戶端該函數(shù)的調(diào)用者.2副本放置策略如圖1所示,Hdfs的副本放置策略是將每一個(gè)數(shù)據(jù)項(xiàng)的副本放置在多個(gè)節(jié)點(diǎn)上.在客戶端運(yùn)行的節(jié)點(diǎn)上放置第1個(gè)副本,在客戶端的遠(yuǎn)程機(jī)架上隨機(jī)選擇一個(gè)節(jié)點(diǎn)放置第2個(gè)副本,在第2個(gè)副本所在機(jī)架上隨機(jī)選擇一個(gè)節(jié)點(diǎn)放置第3個(gè)副本.分布式文件系統(tǒng)的副本放置策略確定每一個(gè)數(shù)據(jù)塊應(yīng)該存放的位置,數(shù)據(jù)塊與節(jié)點(diǎn)之間的關(guān)聯(lián)被記錄在數(shù)據(jù)塊與節(jié)點(diǎn)關(guān)聯(lián)表中,數(shù)據(jù)塊最終會被存放在存儲層的各個(gè)節(jié)點(diǎn)上.2.1基于replicationrapityblot的客戶端集群一致性檢驗(yàn)Hdfs的分塊存儲文件在選擇副本放置位置時(shí),綜合考慮了數(shù)據(jù)存儲的可靠性、數(shù)據(jù)讀寫的帶寬和負(fù)載均衡等因素.如將一個(gè)數(shù)據(jù)塊所有副本都存儲在一個(gè)節(jié)點(diǎn)上,則存儲過程中所占用的帶寬是最小的,因?yàn)檫@可以減少數(shù)據(jù)塊的網(wǎng)絡(luò)傳輸,但該方案不提供有效的冗余備份,一旦該節(jié)點(diǎn)發(fā)生故障,則該節(jié)點(diǎn)中存儲的這一數(shù)據(jù)塊及其所有副本都會丟失.因此,Hdfs對任意一數(shù)據(jù)塊不在同一個(gè)節(jié)點(diǎn)上放置多個(gè)副本,而是將副本盡可能分散存放.圖2給出了Hdfs默認(rèn)的副本放置策略流程,其中標(biāo)注了本文所實(shí)現(xiàn)的對副本放置策略的改進(jìn)工作,Hdfs默認(rèn)的副本放置策略選擇3個(gè)節(jié)點(diǎn),可以選擇多個(gè)節(jié)點(diǎn)放置副本.1)HdFs副本放置策略是調(diào)用ReplicationTargetChooser類的chooseTargrt函數(shù)來實(shí)現(xiàn)的.開始使用NetworkTopology類的contains函數(shù),contains函數(shù)通過判斷客戶端所在根節(jié)點(diǎn)與集群的根節(jié)點(diǎn)是否一致來判斷客戶端是否在集群中.2)如果客戶端是集群中的一個(gè)節(jié)點(diǎn),則調(diào)用ReplicationTargetChooser類的chooseLocalNode函數(shù)來嘗試選擇客戶端節(jié)點(diǎn)作為第1個(gè)節(jié)點(diǎn).3)客戶端存儲嘗試失敗時(shí)則調(diào)用ReplicationTargetChooserchooser類的chooseLocalRack函數(shù),在客戶端節(jié)點(diǎn)所在機(jī)架隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為第1個(gè)節(jié)點(diǎn),然后將這個(gè)節(jié)點(diǎn)的信息傳給ReplicationTargetChooserchooser類中的chooseTargrt函數(shù),且將這個(gè)節(jié)點(diǎn)的信息記錄在ReplicationTargetChooserchooser類中的一個(gè)DatanodeDescriptor類型的數(shù)組results中.4)如果客戶端不是集群中的節(jié)點(diǎn),則使用ReplicationTargetChooser類的chooseRandom函數(shù)在集群中隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為第1個(gè)節(jié)點(diǎn),且將這個(gè)選擇的節(jié)點(diǎn)記錄在數(shù)組results中.5)ReplicationTargetChooser類的chooseRemoteRack函數(shù)在第1個(gè)節(jié)點(diǎn)的遠(yuǎn)程機(jī)架上隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為第2個(gè)節(jié)點(diǎn).如果在遠(yuǎn)程機(jī)架上選擇節(jié)點(diǎn)失敗,則使用ReplicationTargetChooser類的chooseLocalRack函數(shù)在第1個(gè)節(jié)點(diǎn)的本地機(jī)架上隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為第2個(gè)節(jié)點(diǎn).將第2個(gè)節(jié)點(diǎn)記錄在ReplicationTargetChooserchooser類中DatanodeDescriptor下的數(shù)組results中.6)選擇第3個(gè)節(jié)點(diǎn),如果前2個(gè)節(jié)點(diǎn)是在同一個(gè)機(jī)架上,則使用ReplicationTargetChooser類的chooseRemoteRack函數(shù)在前2個(gè)節(jié)點(diǎn)的遠(yuǎn)程機(jī)架上選擇一個(gè)節(jié)點(diǎn).如果所選擇的前2個(gè)節(jié)點(diǎn)并不在同一個(gè)機(jī)架上面,則使用ReplicationTargetChooser類的chooseLocalRack函數(shù)在第2個(gè)節(jié)點(diǎn)的本地機(jī)架上隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為第3個(gè)節(jié)點(diǎn),且存儲第3個(gè)節(jié)點(diǎn)信息在數(shù)組results中.7)最終將results中的所有節(jié)點(diǎn)返回給副本選擇函數(shù)的調(diào)用者.2.2均衡器.均衡器Hdfs默認(rèn)副本放置策略綜合考慮了多方面的因素,在可靠性、讀寫效率,負(fù)載均衡方面都做了一定的權(quán)衡,是一個(gè)比較優(yōu)秀的副本放置策略,但Hdfs采用隨機(jī)選擇的副本放置策略.該策略沒有考慮到節(jié)點(diǎn)負(fù)載的情況,在數(shù)據(jù)均衡方面比較薄弱,這使數(shù)據(jù)損壞時(shí)需要恢復(fù)的數(shù)據(jù)塊數(shù)量可能會很多,數(shù)據(jù)讀取的速度會受到影響等問題.針對這一問題,Hdfs提供了解決方案———均衡器.均衡器(balancer)是一個(gè)Hdfs的守護(hù)進(jìn)程,啟動之后,它會將數(shù)據(jù)塊從負(fù)載較高的節(jié)點(diǎn)移到相對空閑的節(jié)點(diǎn),從而達(dá)到重新分配數(shù)據(jù)塊的目的,最終達(dá)到整個(gè)集群的數(shù)據(jù)塊分布均衡.在數(shù)據(jù)塊重新分配的過程中,均衡器會盡量將一個(gè)數(shù)據(jù)塊的復(fù)本分散到不同機(jī)架,以提高數(shù)據(jù)塊的冗余,降低數(shù)據(jù)損壞的可能性.Hdfs集群的管理員決定是否啟動均衡器,啟動后,會根據(jù)管理員設(shè)定的閥值來對集群進(jìn)行均衡處理.閥值是每個(gè)節(jié)點(diǎn)的使用率(該節(jié)點(diǎn)上已經(jīng)使用的空間和節(jié)點(diǎn)的空間容量之間的比值)和集群的使用率(集群中已使用的空間和集群的空間容量之間的比值)之間的差值,默認(rèn)的閥值是10%,管理員在啟動均衡器的時(shí)候,可以指定閥值的大小.在任何時(shí)刻,集群中只能運(yùn)行一個(gè)均衡器.均衡器雖然可以解決數(shù)據(jù)塊分布不均衡的問題,但是存在著明顯的問題:1)均衡器對于集群數(shù)據(jù)塊均衡的調(diào)節(jié)具有滯后性,它必須要在系統(tǒng)的不均衡狀況超過閥值之后,才會進(jìn)行調(diào)節(jié).2)均衡器的運(yùn)行和數(shù)據(jù)塊的移動需要耗費(fèi)一定的資源,很可能一個(gè)數(shù)據(jù)塊剛剛寫入到集群中,就因?yàn)榫庑远灰苿?這種情況下集群的資源使用是很低效的.3低使用率副放置策略Hdfs默認(rèn)的副本放置策略存在的不足,以及Hdfs提供的均衡器存在一些不盡人意的地方,本文提出了對其改進(jìn)的低使用率優(yōu)先(lowratefirst)副本放置策略.3.1hdfs默副放置策略圖3是副本放置改進(jìn)策略的流程.1)考慮到數(shù)據(jù)寫入帶寬問題,依然在客戶端所在的節(jié)點(diǎn)上寫入第1個(gè)副本,但考慮了該節(jié)點(diǎn)的負(fù)載情況,即如果本地節(jié)點(diǎn)的負(fù)載超過了管理員指定的閥值,則選擇集群中使用率較低的節(jié)點(diǎn)來放置副本.2)除第1個(gè)副本在閥值滿足的情況下放在本地節(jié)點(diǎn)上之外,其余所有的副本放置位置的選擇,都是采用優(yōu)先選擇集群中比較空閑的節(jié)點(diǎn)的方式,以避免在負(fù)載較高的節(jié)點(diǎn)上繼續(xù)存儲數(shù)據(jù).3)為提高數(shù)據(jù)塊的冗余,盡可能地將數(shù)據(jù)存儲在至少2個(gè)機(jī)架上,本地機(jī)架上存儲第1個(gè)副本,第2個(gè)副本選擇與第1個(gè)節(jié)點(diǎn)不同的機(jī)架進(jìn)行存儲.因?yàn)镠dfs是一次寫入、多次讀取的設(shè)計(jì)思想,在數(shù)據(jù)寫入的時(shí)候穿越多個(gè)機(jī)架,雖然寫入帶寬可能會有所降低,但是提高了集群的數(shù)據(jù)塊分布均衡,有利于文件的讀取和程序的運(yùn)行.4)為提高數(shù)據(jù)的冗余,保持每個(gè)節(jié)點(diǎn)只存儲一個(gè)副本的規(guī)則.Hdfs的默認(rèn)副本放置策略是一個(gè)節(jié)點(diǎn)最多放置一個(gè)副本,如果副本的數(shù)量超過節(jié)點(diǎn)的總數(shù),則集群中最多只放置與節(jié)點(diǎn)同樣數(shù)目的副本.低使用率優(yōu)先的放置策略依然堅(jiān)持這個(gè)原則,每個(gè)節(jié)點(diǎn)最多只放置一個(gè)副本.盡管當(dāng)發(fā)生故障時(shí),此策略會影響恢復(fù)數(shù)據(jù)速度,而且每存儲一個(gè)副本時(shí)都需要調(diào)用函數(shù)獲取節(jié)點(diǎn)信息,并判斷該節(jié)點(diǎn)是否可以存儲副本,這會降低運(yùn)行速度及安全性.但考慮到Hdfs默認(rèn)放置策略的副本放置的最終狀態(tài)很難被控制,它在數(shù)據(jù)均衡方面的缺點(diǎn)比較明顯,而這會帶來一系列的問題,比如數(shù)據(jù)損壞時(shí)需要恢復(fù)的數(shù)據(jù)塊數(shù)量可能會有很多,數(shù)據(jù)讀取的速度可能會受到影響等因素,本文提出的對于Hdfs默認(rèn)副本放置策略的改進(jìn)方法有相對優(yōu)勢.3.2塊的副本副本放置改進(jìn)策略會優(yōu)先考慮在使用率比較低的節(jié)點(diǎn)上放置數(shù)據(jù),這通過對Hdfs中負(fù)責(zé)副本放置節(jié)點(diǎn)選擇的類ReplicationTargetChooser的改進(jìn)來完成;該類在Hdfs中的作用是當(dāng)有新增數(shù)據(jù)塊或數(shù)據(jù)塊位置變動的時(shí)候,NameNode會調(diào)用該類來確定數(shù)據(jù)塊放置的位置.ReplicationTargetChooser類使用chooseTarget函數(shù)來選擇副本放置的節(jié)點(diǎn),圖4描述了放置k個(gè)副本重寫chooseTarget函數(shù)來實(shí)現(xiàn)的策略改進(jìn).1)函數(shù)的初始化階段:首先調(diào)用NetworkTopology類中的getNumOfLeaves函數(shù)來獲取集群的大小,控制副本數(shù)目不超過集群的大小,如果設(shè)置的副本的數(shù)目超過集群的大小,則設(shè)置副本數(shù)目為集群大小.2)管理員可設(shè)置本地節(jié)點(diǎn)閥值,默認(rèn)值為0.1,改進(jìn)后的Hdfs在配置文件中為用戶設(shè)置閥值提供了接口,在Hdfs.xml文件中可以通過為dfs.replication.threshold設(shè)置值來實(shí)現(xiàn)閥值的控制,閥值的范圍在0~1,0表示本地節(jié)點(diǎn)的使用率必須小于等于集群的使用率才會在本地節(jié)點(diǎn)上放置數(shù)據(jù)塊的副本;1表示不考慮使用率,一定要在本地節(jié)點(diǎn)上放置數(shù)據(jù)塊的副本.3)使用Configuration類的getFloat函數(shù)配置文件中的閥值.但如果用戶沒有設(shè)置閥值或者設(shè)置的閥值不合理,chooseTarget函數(shù)依然使用默認(rèn)閥值進(jìn)行副本的選擇.4)在重寫的chooseTarget函數(shù)中需定義一個(gè)DataNodeDescriptor類型的數(shù)組DN來存儲全部節(jié)點(diǎn)的信息,DataNodeDescriptor是Hdfs中用于描述DataNode信息的類,chooseTarget函數(shù)可以通過操縱DataNodeDescriptor的對象來獲取一個(gè)節(jié)點(diǎn)的信息,包括節(jié)點(diǎn)ID、節(jié)點(diǎn)名稱、節(jié)點(diǎn)全部存儲空間和節(jié)點(diǎn)已經(jīng)使用的存儲空間等.另外,還需定義DataNodeDescriptor類型的數(shù)組results來存儲已選擇的節(jié)點(diǎn),同時(shí)定義集群的存儲空間使用率Usage.5)使用NetworkTopology類中的getLeaf函數(shù)可以獲取集群中所有節(jié)點(diǎn)的信息,將返回的所有節(jié)點(diǎn)信息存儲在數(shù)組DN中,然后可以根據(jù)DN中的信息計(jì)算集群的整體存儲空間的使用率Usage.在獲取所有節(jié)點(diǎn)信息之后,并不對數(shù)組DN進(jìn)行任何處理,比如排序、建堆等.雖然考慮到后面的算法中需要多次取得DN中使用率最小的節(jié)點(diǎn),但考慮客戶端和不同機(jī)架,因此該問題又與經(jīng)典TopK問題相似且稍有不同.一般副本個(gè)數(shù)K默認(rèn)為3,如果在客戶端上放置一個(gè)副本,選擇另外2個(gè)副本的計(jì)算復(fù)雜度為O(2N-3).6)初始化后選擇節(jié)點(diǎn),先通過Hdfs調(diào)用chooseTarget函數(shù),使用NetworkTopology類中的contains函數(shù)判斷客戶端節(jié)點(diǎn)是否在集群中,如果不在,則不在客戶端上放置副本.否則還需進(jìn)一步判斷客戶端節(jié)點(diǎn)的使用率與集群使用率的差值,如果差值小于閥值,則在客戶端上放置第1個(gè)副本,否則不在客戶端上放置副本.使用ReplicationTargetChooser類的isGoodTarget判斷客戶端節(jié)點(diǎn)是否可用,才能確定是否在客戶端節(jié)點(diǎn)上放置一個(gè)數(shù)據(jù)塊.7)如果客戶端不可用,則在DN中選擇使用率最低的節(jié)點(diǎn)來嘗試放置副本,如節(jié)點(diǎn)不可用,則將該節(jié)點(diǎn)標(biāo)記為暫時(shí)不可選擇,然后繼續(xù)在其他節(jié)點(diǎn)中選擇一個(gè)使用率最低的節(jié)點(diǎn),直到選擇到合適的節(jié)點(diǎn)為止.8)機(jī)架數(shù)目對副本放置節(jié)點(diǎn)的算法有一定的影響,使用NetworkTopology類的getNumOfRacks函數(shù)來獲取機(jī)架的數(shù)目,則在DN中選擇一個(gè)使用率最小的節(jié)點(diǎn)作為第1個(gè)副本放置的節(jié)點(diǎn).選擇第1個(gè)節(jié)點(diǎn)后,將其從DN中移除,加入到results數(shù)組中.9)在選擇第2個(gè)節(jié)點(diǎn)的時(shí)候,在DN中選擇使用率最小的節(jié)點(diǎn),然后使用NetworkTopology類的isOnSameRack函數(shù)判斷它與選取的第1個(gè)節(jié)點(diǎn)是否在相同的機(jī)架上.如果這2個(gè)節(jié)點(diǎn)不在一個(gè)機(jī)架上,則選擇這個(gè)節(jié)點(diǎn)作為第2個(gè)副本存放的節(jié)點(diǎn),否則,重新選擇DN中其他節(jié)點(diǎn)中使用率最小的節(jié)點(diǎn),直到找到這樣的節(jié)點(diǎn)為止.選擇第2個(gè)節(jié)點(diǎn)之后,將其從記錄未被選擇節(jié)點(diǎn)的數(shù)組DN中移除,加入到記錄已選擇節(jié)點(diǎn)的數(shù)組results中.10)繼續(xù)上述步驟選擇其他節(jié)點(diǎn).11)函數(shù)執(zhí)行過程中,使用java中的try來嘗試運(yùn)行,若chooseTarget函數(shù)的運(yùn)行沒有出現(xiàn)異常,則最終將存儲已選擇節(jié)點(diǎn)的數(shù)組results返回給函數(shù)的調(diào)用者.若執(zhí)行過程中出現(xiàn)不可處理的異常,則在catch語句中處理異常,返回客戶端節(jié)點(diǎn).4不同副本放置策略下的節(jié)點(diǎn)使用率為了比較Hdfs默認(rèn)的和本文改進(jìn)的副本放置策略,本文實(shí)現(xiàn)了由2部分組成的測試程序:1)負(fù)責(zé)模擬一個(gè)節(jié)點(diǎn)運(yùn)行的DataNode類,該類記錄了模擬節(jié)點(diǎn)的惟一標(biāo)識、容量、使用量、數(shù)據(jù)塊數(shù)量以及機(jī)架標(biāo)識;2)模擬系統(tǒng)運(yùn)行的NameNode類,包括對于DataNode的初始化、設(shè)置閥值、設(shè)置副本放置策略和數(shù)據(jù)寫入等內(nèi)容的模擬.在模擬的過程中,并不進(jìn)行真實(shí)的數(shù)據(jù)的讀寫,只是對于數(shù)據(jù)讀寫后的結(jié)果進(jìn)行模擬記錄.在NameNode類中初始化所有的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)初始的容量是1T,used和blockNum被設(shè)置為0.該程序模擬寫入過程,設(shè)置寫入數(shù)據(jù)塊的大小和模擬數(shù)據(jù)的分塊.對于每一個(gè)劃分的數(shù)據(jù)塊,程序運(yùn)行相應(yīng)的副本放置策略函數(shù),選擇3個(gè)節(jié)點(diǎn)用于放置劃分的數(shù)據(jù)塊.然后循環(huán)處理直到數(shù)據(jù)塊的寫入完成.寫入所有數(shù)據(jù)后,可根據(jù)模擬節(jié)點(diǎn)的使用情況計(jì)算不同的副本放置策略的數(shù)據(jù)存儲均衡性.本文使用標(biāo)準(zhǔn)差來衡量副本放置的均衡性,所使用的數(shù)據(jù)是所有DataNode的使用率,也就是每個(gè)節(jié)點(diǎn)的使用容量used與總?cè)萘縞apacity之間的比值.設(shè)集群中一共有n個(gè)節(jié)點(diǎn),所有節(jié)點(diǎn)的使用率分別為X1,X2,...,Xn-1,Xn.節(jié)點(diǎn)使用率的平均值本文實(shí)驗(yàn)一測試了機(jī)架數(shù)目對于算法的影響,分別使用默認(rèn)的策略和改進(jìn)后的策略,模擬測試在500個(gè)節(jié)點(diǎn)上寫入大小不同的數(shù)據(jù)后,系統(tǒng)的存儲均衡情況,寫入文件大小為100G條件下的節(jié)點(diǎn)使用率的標(biāo)準(zhǔn)差.從圖5中可以看出,對于默認(rèn)的副本放置策略,機(jī)架數(shù)目在3個(gè)以內(nèi)的時(shí)候,機(jī)架的個(gè)數(shù)對于系統(tǒng)的均衡性會有一定的影響,但是差別在0.02%以內(nèi).當(dāng)機(jī)架數(shù)目超過3個(gè)以后,機(jī)架數(shù)目對于系統(tǒng)均衡性的影響會在0.005%以內(nèi).而對于改進(jìn)后的副本放置策略,機(jī)架的數(shù)目對于集群的均衡性影響會變得更小,在0.002%以內(nèi).所以,機(jī)架的個(gè)數(shù)對于2種副本放置策略的影響都很小.通過圖5可以看出,改進(jìn)后的副本放置策略受到的影響更小,在不同機(jī)架個(gè)數(shù)情況下,都有更好的均衡性.實(shí)驗(yàn)二測試隨著寫入數(shù)據(jù)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論