摘 "要: 隨著電子商務(wù)不斷發(fā)展,郵政快遞行業(yè)數(shù)據(jù)日益增多,傳統(tǒng)方式對(duì)于郵政數(shù)據(jù)存儲(chǔ)的理論與方法都已無(wú)法滿足需求?;诖饲闆r,使用一致性哈希算法來(lái)解決存儲(chǔ)系統(tǒng)的橫向彈性擴(kuò)展,結(jié)合一致性哈希的虛擬節(jié)點(diǎn)與加權(quán)輪詢算法優(yōu)化Hadoop平臺(tái)下分布式文件系統(tǒng)(HDFS)存儲(chǔ)策略,實(shí)現(xiàn)集群在同構(gòu)與異構(gòu)條件下的數(shù)據(jù)均衡效果。同時(shí)介紹集群節(jié)點(diǎn)數(shù)據(jù)轉(zhuǎn)移思想,設(shè)計(jì)負(fù)載因子與系統(tǒng)自檢周期,實(shí)現(xiàn)了集群動(dòng)態(tài)權(quán)重的負(fù)載轉(zhuǎn)移,并進(jìn)行實(shí)驗(yàn)驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,文章提出的改進(jìn)算法與HDFS、普通一致性哈希相比,在不同條件下集群負(fù)載差值均有不同程度的提升,證明了該策略可以有效降低集群節(jié)點(diǎn)間負(fù)載差值。
關(guān)鍵詞: 數(shù)據(jù)存儲(chǔ); 一致性哈希算法; 加權(quán)輪詢算法; 分布式文件系統(tǒng); 負(fù)載均衡; 異構(gòu)集群; 分配策略
中圖分類號(hào): TN919?34; TP319.9 " " " " " " " " " 文獻(xiàn)標(biāo)識(shí)碼: A " " " " " " " " " "文章編號(hào): 1004?373X(2024)06?0043?06
Research on improved consistency hash optimization algorithm for storing postal data
LI Zeshan
(The Information Center of National Forestry and Grassland Administration, Beijing 100714, China)
Abstract: With the continuous development of e?commerce and the increasing number of data in the postal express industry, traditional methods are no longer meet the needs for the theories and methods of postal data storage. Based on this situation, the consistent hash algorithm is used to solve the horizontal elastic expansion of the storage system, and the storage strategy of distributed file system (HDFS) on Hadoop platform is optimized by combining consistent hashing with virtual nodes and weighted polling algorithm to realize the data balance in clusters under homogeneous and heterogeneous conditions. The concept of cluster node data transfer is introduced, and the load factors and system self check cycles is designed, so as to realize the load transfer of dynamic cluster weights, and conduct the experimental verification. The experimental results show that the proposed improved algorithm has different degrees of improvement in cluster load difference compared with HDFS and regular consistency hashing under different conditions, proving that this strategy can effectively reduce the load difference between cluster nodes.
Keywords: data storage; consistent hashing algorithm; weighted polling algorithm; distributed file system; load balancing; heterogeneous clusters; allocation strategy
0 "引 言
隨著大數(shù)據(jù)時(shí)代到來(lái),人們的生活逐漸依附網(wǎng)絡(luò),使網(wǎng)絡(luò)信息數(shù)據(jù)急劇猛增,給郵政業(yè)務(wù)帶來(lái)了新的挑戰(zhàn)。合理地存儲(chǔ)郵政龐大數(shù)據(jù)才能使用戶、快遞企業(yè)和郵政管理者之間工作效率提高,降低企業(yè)投訴率。2022年全國(guó)快遞業(yè)務(wù)量為1 105.81 億件,同比增長(zhǎng)2.1%,預(yù)計(jì)2023年全年郵政業(yè)業(yè)務(wù)的快遞業(yè)務(wù)量將達(dá)到1 300億件。
在此背景下,使用分布式存儲(chǔ)海量數(shù)據(jù)[1]成為數(shù)據(jù)存儲(chǔ)的主要技術(shù)。其中HDFS是分布式系統(tǒng)基礎(chǔ)架構(gòu)Hadoop的核心功能模塊,由于其具有數(shù)據(jù)傳輸速率高和容錯(cuò)性好的特性,可以有效解決郵政數(shù)據(jù)的存儲(chǔ)問(wèn)題。如文獻(xiàn)[2]提出在HDFS分布式系統(tǒng)上層,使用Hbase將郵政數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中,用以解決企業(yè)海量數(shù)據(jù)存儲(chǔ)問(wèn)題。文獻(xiàn)[3]提出基于Hadoop框架下的大數(shù)據(jù)分析功能對(duì)郵政快遞的寄遞系統(tǒng)進(jìn)行設(shè)計(jì)。文獻(xiàn)[4]在Hadoop框架基礎(chǔ)上,結(jié)合內(nèi)存數(shù)據(jù)庫(kù)構(gòu)建大數(shù)據(jù)模型,對(duì)存儲(chǔ)在HDFS中的數(shù)據(jù)進(jìn)行檢測(cè)、監(jiān)控與分析,設(shè)計(jì)一套反洗錢系統(tǒng)。但這些研究都在HDFS原有存儲(chǔ)策略上進(jìn)行,HDFS隨機(jī)性放置數(shù)據(jù)的策略容易造成系統(tǒng)節(jié)點(diǎn)數(shù)據(jù)分布不均,直接影響系統(tǒng)性能,限制了存儲(chǔ)效率。
1 "相關(guān)工作
針對(duì)HDFS隨機(jī)放置數(shù)據(jù)的問(wèn)題,學(xué)者們提出如下解決方案:文獻(xiàn)[5]存放數(shù)據(jù)的思想是計(jì)算所有節(jié)點(diǎn)當(dāng)前的使用情況,選擇使用空閑的節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù);文獻(xiàn)[6]把緩存問(wèn)題轉(zhuǎn)換為整數(shù)規(guī)劃問(wèn)題,設(shè)計(jì)了一種兼顧存儲(chǔ)成本與帶寬成本的對(duì)等方法;文獻(xiàn)[7]提出根據(jù)集群內(nèi)節(jié)點(diǎn)存儲(chǔ)性能和網(wǎng)絡(luò)拓?fù)渚嚯x,找到集群的最優(yōu)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)存放。這些方法在數(shù)據(jù)均衡方面取得了一定進(jìn)展,但沒有兼顧到可靠性與系統(tǒng)單調(diào)性的問(wèn)題。
在此基礎(chǔ)上,文獻(xiàn)[8]提出一種單純使用一致性哈希算法解決的方案,以實(shí)現(xiàn)系統(tǒng)單調(diào)的問(wèn)題。文獻(xiàn)[9]提出在Hadoop下通過(guò)Datanode緩存部分小文件的策略,來(lái)解決Namenode在存儲(chǔ)時(shí)負(fù)載失衡問(wèn)題;文獻(xiàn)[10]提出一種基于跳躍Hash的對(duì)象分布算法,憑借占用資源更少而優(yōu)化存儲(chǔ)數(shù)據(jù)效率。這些研究很大程度提升了數(shù)據(jù)可靠性,但未考慮到節(jié)點(diǎn)性能不同的異構(gòu)集群數(shù)據(jù)存儲(chǔ)情況。
之后的研究中,文獻(xiàn)[11]基于Eclipse的研發(fā)環(huán)境,設(shè)計(jì)一個(gè)任務(wù)調(diào)度器用以最大化利用分布式系統(tǒng)內(nèi)的內(nèi)存對(duì)集群中的內(nèi)存與緩存進(jìn)行負(fù)載均衡,經(jīng)實(shí)驗(yàn)證明,在部分場(chǎng)景下該方法比傳統(tǒng)分布式系統(tǒng)具有更好的效率;文獻(xiàn)[12]基于Nginx服務(wù)器研究了集群負(fù)載均衡的場(chǎng)景,提出基于動(dòng)態(tài)權(quán)重的連接算法,根據(jù)該算法得出數(shù)據(jù)的分配方法。
以上算法多數(shù)能與其他算法相兼容,說(shuō)明使用算法仍然可以優(yōu)化HDFS分布式系統(tǒng)的負(fù)載均衡。本文提出一種使用一致性哈希算法結(jié)合加權(quán)輪詢的數(shù)據(jù)分配策略,在分布式系統(tǒng)中,集群的動(dòng)態(tài)擴(kuò)展利用一致性哈希可以較好解決。但一致性哈希算法中沒有對(duì)于負(fù)載均衡的描述,單一的一致性哈希容易導(dǎo)致系統(tǒng)的負(fù)載傾斜。因此,引入虛擬節(jié)點(diǎn)思想來(lái)均分?jǐn)?shù)據(jù),并結(jié)合加權(quán)輪詢算法進(jìn)行存儲(chǔ)節(jié)點(diǎn)權(quán)值的數(shù)據(jù)分配,針對(duì)快遞數(shù)據(jù)特點(diǎn)來(lái)改進(jìn)HDFS分布式系統(tǒng)存儲(chǔ)策略。將此方法與HDFS原存儲(chǔ)策略以及基于虛擬節(jié)點(diǎn)的普通一致性哈希分配策略進(jìn)行實(shí)驗(yàn)對(duì)比,證明文章研究的策略在不同條件下的數(shù)據(jù)存儲(chǔ)負(fù)載均衡方面得到較大提升。
2 "存儲(chǔ)分配策略的研究
2.1 "一致性哈希算法
一致性哈希是負(fù)載均衡領(lǐng)域里一種應(yīng)用廣泛的算法,最早于1997年,由麻省理工學(xué)院的David Karger提出,用于改進(jìn)P2P網(wǎng)絡(luò)中哈希表重映射的問(wèn)題。算法中首先抽象整個(gè)存儲(chǔ)系統(tǒng)形成一個(gè)封閉的232-1環(huán)形哈??臻g,再使用哈希算法將存儲(chǔ)節(jié)點(diǎn)與數(shù)據(jù)映射到哈希環(huán)內(nèi)。
如圖1所示,哈希環(huán)內(nèi)有Node1、Node2、Node3三臺(tái)機(jī)器,以及Data1、Data2、Data3、Data4四個(gè)存儲(chǔ)對(duì)象。當(dāng)Node2被刪除,根據(jù)一致性哈希順時(shí)針遷移原則,原本存儲(chǔ)在Noede2的數(shù)據(jù)Data3會(huì)被存儲(chǔ)到Node3中,系統(tǒng)內(nèi)對(duì)象沒有任何的改動(dòng),極大地減小了刪除節(jié)點(diǎn)數(shù)據(jù)分布時(shí)系統(tǒng)的壓力。
如圖2所示,在集群內(nèi)進(jìn)行節(jié)點(diǎn)(機(jī)器)添加操作時(shí),在集群中添加一個(gè)新的節(jié)點(diǎn)Node4,通過(guò)順時(shí)針遷移原則,Data3會(huì)存儲(chǔ)到Node4中。這種特殊的哈希算法實(shí)現(xiàn)了少量數(shù)據(jù)的遷移,避免了幾乎全部數(shù)據(jù)的移動(dòng)。因此,一致性哈希算法是對(duì)動(dòng)態(tài)擴(kuò)展能力進(jìn)行優(yōu)化的一種哈希算法[13]。
2.2 "虛擬節(jié)點(diǎn)分配策略
虛擬節(jié)點(diǎn)是一種廣泛應(yīng)用于各種工程場(chǎng)景的概念,但當(dāng)存儲(chǔ)節(jié)點(diǎn)的數(shù)量太少,會(huì)導(dǎo)致其無(wú)法做到在哈希環(huán)上均勻分布,進(jìn)而出現(xiàn)負(fù)載失衡。針對(duì)此問(wèn)題,本文在物理節(jié)點(diǎn)與數(shù)據(jù)之間設(shè)計(jì)一個(gè)虛擬層,虛擬層由大量虛擬節(jié)點(diǎn)構(gòu)成,如圖3所示。虛擬節(jié)點(diǎn)被真實(shí)物理節(jié)點(diǎn)包含,多個(gè)虛擬節(jié)點(diǎn)對(duì)應(yīng)一個(gè)物理節(jié)點(diǎn),數(shù)據(jù)通過(guò)哈希函數(shù)映射到虛擬節(jié)點(diǎn)上,實(shí)際存儲(chǔ)到對(duì)應(yīng)的物理節(jié)點(diǎn)中,通過(guò)這種方法就有足夠的虛擬節(jié)點(diǎn)來(lái)進(jìn)行一致性哈希操作。
如果系統(tǒng)內(nèi)分配較少的虛擬節(jié)點(diǎn),會(huì)造成一致性哈希無(wú)法滿足系統(tǒng)負(fù)載均衡的效果;而虛擬節(jié)點(diǎn)過(guò)多又會(huì)導(dǎo)致存儲(chǔ)系統(tǒng)需花費(fèi)較長(zhǎng)時(shí)間才能找到對(duì)應(yīng)的虛擬節(jié)點(diǎn),拖慢系統(tǒng)效率。因此,設(shè)計(jì)虛擬節(jié)點(diǎn)的數(shù)量十分重要。
在集群節(jié)點(diǎn)性能一致的同構(gòu)條件下,根據(jù)郵政快遞數(shù)據(jù)快遞單號(hào)的唯一性,更改HDFS中的塊存儲(chǔ)隨機(jī)放置策略,將每一條數(shù)據(jù)中的單號(hào)作為key值,映射到哈希環(huán)上,然后把節(jié)點(diǎn)的IP地址再次映射到哈希環(huán)上,整個(gè)環(huán)內(nèi)作1∶N 配比的虛擬節(jié)點(diǎn)映射。該哈希環(huán)便可分割為N+1個(gè)獨(dú)立的區(qū)間,將key分發(fā)到哈希環(huán),由于key的數(shù)量巨大,每個(gè)區(qū)間都能夠分發(fā)到相對(duì)均勻的key??梢酝茰y(cè),在一個(gè)1∶N 配比的虛擬節(jié)點(diǎn)映射的一致性哈希系統(tǒng)中,假設(shè)某個(gè)物理節(jié)點(diǎn)的初始哈希位置為P,其所代表的所有映射節(jié)點(diǎn)的哈希位置應(yīng)當(dāng)表示為:
[P'=232-1N+1k+Pmod(232-1), "k=0,1,2,…,N] (1)
在哈希環(huán)內(nèi)為減少哈希映射的重復(fù)度,本文還為該系統(tǒng)采用一種完美哈希算法(Perfect Hashing)作為計(jì)算哈希值的依據(jù)。其中,在性能和使用領(lǐng)域都比較有優(yōu)勢(shì)的是BKDR哈希算法,以h表示特征字符串的哈希結(jié)果,l表示字符串長(zhǎng)度,s表示前后字符在哈希運(yùn)算中的權(quán)重比(取值可以為31、131、1 313等),其計(jì)算公式表達(dá)為:
[h=n=0l-1xn·sn] (2)
由于在一致性哈希系統(tǒng)中,該計(jì)算結(jié)果需要對(duì) 232-1 的哈希環(huán)長(zhǎng)度進(jìn)行取模運(yùn)算,因此最終的哈希結(jié)果表示為:
[h=n=0l-1xn·snmod(232-1)] (3)
異構(gòu)服務(wù)器集群中,由于各個(gè)節(jié)點(diǎn)性能不一,通常要配置數(shù)量巨大的虛擬節(jié)點(diǎn)來(lái)平衡異構(gòu)狀態(tài)。這種方法會(huì)造成為虛擬節(jié)點(diǎn)分配較多的額外資源,還降低了系統(tǒng)內(nèi)查找效率。若節(jié)點(diǎn)為[i],其計(jì)算能力設(shè)為[ai],每臺(tái)節(jié)點(diǎn)的虛擬層引入的虛擬節(jié)點(diǎn)個(gè)數(shù)為[klogN],其中N為設(shè)備總數(shù),k為常數(shù)。假設(shè)集群內(nèi),算力最低的節(jié)點(diǎn)用[amin]表示,那么在一致性哈希算法中,系統(tǒng)在異構(gòu)條件下分配虛擬節(jié)點(diǎn)個(gè)數(shù)為:[i=0NaiaminklogN]??梢钥闯?,當(dāng)[aiamin]值很大時(shí),則將引入大量的虛擬節(jié)點(diǎn),降低了存儲(chǔ)系統(tǒng)效率。
2.3 "加權(quán)輪詢算法分配策略
以上的分析說(shuō)明在異構(gòu)條件下僅憑虛擬節(jié)點(diǎn)的引入無(wú)法保證數(shù)據(jù)均衡,需結(jié)合加權(quán)輪詢算法繼續(xù)優(yōu)化數(shù)據(jù)分配策略。加權(quán)輪詢算法是對(duì)輪詢算法的改進(jìn),用權(quán)值來(lái)表示節(jié)點(diǎn)之間存在的差異,權(quán)值高的節(jié)點(diǎn)分配的存儲(chǔ)任務(wù)多,權(quán)值低的節(jié)點(diǎn)分配的存儲(chǔ)任務(wù)少。
在傳統(tǒng)加權(quán)輪詢算法中,一般人為設(shè)置算法內(nèi)權(quán)值大小,這樣無(wú)法動(dòng)態(tài)表述節(jié)點(diǎn)間差異。本文提出的加權(quán)輪詢實(shí)現(xiàn)負(fù)載均衡算法是在分配數(shù)據(jù)階段通過(guò)獲取節(jié)點(diǎn)的存儲(chǔ)空間ROM利用率,對(duì)比平均值進(jìn)行數(shù)據(jù)的存儲(chǔ)分配。其中,存儲(chǔ)空間ROM利用率即為算法中要收集的負(fù)載因子。
對(duì)于負(fù)載因子的收集,在Hadoop中,通過(guò)API接口編寫相應(yīng)依賴包可以采集磁盤的使用情況。通過(guò)命令hdfs dfsadmin?report獲取磁盤的使用情況。
磁盤的利用率公式為:
[η=disctotal+discfreedisctotal] " " "(4)
式中:[η]表示服務(wù)器磁盤的利用率;[disctotal]表示磁盤空間;[discfree]表示磁盤剩余空間。
Hadoop中,主節(jié)點(diǎn)(namenode)作為負(fù)載均衡服務(wù)器,處理客戶端發(fā)送的存儲(chǔ)數(shù)據(jù)請(qǐng)求,之后發(fā)揮負(fù)載均衡服務(wù)器作用,對(duì)各個(gè)從節(jié)點(diǎn)實(shí)時(shí)反饋其負(fù)載狀態(tài),即負(fù)載因子信息,然后把請(qǐng)求根據(jù)權(quán)值輪詢分配到各節(jié)點(diǎn),從節(jié)點(diǎn)根據(jù)實(shí)時(shí)負(fù)載情況分配數(shù)據(jù),完成處理請(qǐng)求,將結(jié)果發(fā)送給主節(jié)點(diǎn),之后主節(jié)點(diǎn)直接發(fā)送給客戶端,完成分配。加權(quán)輪詢分配的工作模型如圖4所示。
具體執(zhí)行分配數(shù)據(jù)步驟如下:
1) 系統(tǒng)收到數(shù)據(jù)存儲(chǔ)請(qǐng)求后,開始收集當(dāng)前各節(jié)點(diǎn)負(fù)載因子的值。
2) 將各個(gè)負(fù)載因子的值與系統(tǒng)內(nèi)負(fù)載平均值作比較,設(shè)系統(tǒng)平均負(fù)載為[L],節(jié)點(diǎn)為[i],若存在[L≥Li],則將這臺(tái)服務(wù)器的權(quán)值設(shè)置為0,此次存儲(chǔ)不再對(duì)這臺(tái)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)分配;若[Llt;Li],則根據(jù)負(fù)載因子計(jì)算各個(gè)節(jié)點(diǎn)權(quán)重,根據(jù)權(quán)重進(jìn)行節(jié)點(diǎn)的數(shù)據(jù)分配。
3) 對(duì)分配的數(shù)據(jù)節(jié)點(diǎn),根據(jù)負(fù)載因子按比分配數(shù)據(jù),完成權(quán)值輪詢分配任務(wù)。
2.4 "節(jié)點(diǎn)間負(fù)載轉(zhuǎn)移策略
在HDFS分布式系統(tǒng)中,為達(dá)到負(fù)載均衡更好的效果,需要滿足節(jié)點(diǎn)間的數(shù)據(jù)遷移。此外,當(dāng)某些節(jié)點(diǎn)中的讀寫頻率較高,將造成此節(jié)點(diǎn)負(fù)載壓力較大,嚴(yán)重時(shí)甚至導(dǎo)致系統(tǒng)崩潰。因此,需要結(jié)合虛擬節(jié)點(diǎn)與加權(quán)輪詢算法進(jìn)行節(jié)點(diǎn)間動(dòng)態(tài)負(fù)載均衡轉(zhuǎn)移策略設(shè)計(jì)。
實(shí)現(xiàn)系統(tǒng)動(dòng)態(tài)負(fù)載均衡的過(guò)程是時(shí)刻獲取每個(gè)節(jié)點(diǎn)當(dāng)前負(fù)載信息。由于此操作需花費(fèi)系統(tǒng)額外性能,因此文章設(shè)計(jì)抓取的節(jié)點(diǎn)負(fù)載信息以周期性的方式收集,用來(lái)降低這些額外開銷。在時(shí)間周期上,兼顧算法的效率,本文收集的時(shí)間周期是30 s(T=30 s)。根據(jù)上文,設(shè)集群內(nèi)負(fù)載因子最輕節(jié)點(diǎn)負(fù)載為[Lmin],負(fù)載因子最重節(jié)點(diǎn)負(fù)載為[Lmax],負(fù)載因子居中節(jié)點(diǎn)為[Lmid],[i]為節(jié)點(diǎn),調(diào)整負(fù)載均衡的上限為[Threshold],若有節(jié)點(diǎn)[i]中[Lmax-Lmidgt;Thresholdi],即對(duì)負(fù)載超重進(jìn)行調(diào)整,策略為減少[Lmax]節(jié)點(diǎn)對(duì)應(yīng)的虛擬層中節(jié)點(diǎn)。同時(shí)把計(jì)劃存儲(chǔ)到此節(jié)點(diǎn)的數(shù)據(jù)按照順時(shí)針遷移原則轉(zhuǎn)存環(huán)內(nèi)順時(shí)針下一個(gè)節(jié)點(diǎn),并清空節(jié)點(diǎn)預(yù)警信息。
同理,若節(jié)點(diǎn)[i]中[Lmid-Lmingt;Thresholdi],即進(jìn)行負(fù)載過(guò)輕調(diào)控,對(duì)應(yīng)地增加[Lmin]虛擬層中虛擬節(jié)點(diǎn)數(shù)量,并對(duì)比環(huán)內(nèi)逆時(shí)針下一節(jié)點(diǎn)中數(shù)據(jù)量,均衡兩節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)量,清空節(jié)點(diǎn)預(yù)警信息。
3 "實(shí)驗(yàn)結(jié)果及分析
3.1 "實(shí)驗(yàn)平臺(tái)及部署
實(shí)驗(yàn)使用高性能計(jì)算機(jī)在VMware Workstation軟件上進(jìn)行。系統(tǒng)平臺(tái)的參數(shù)如表1所示。默認(rèn)已搭建完成Hadoop全分布式系統(tǒng)實(shí)驗(yàn)平臺(tái)。
3.2 "實(shí)驗(yàn)數(shù)據(jù)的選取
本文研究針對(duì)郵政行業(yè)快遞數(shù)據(jù)的存儲(chǔ),快遞公司的工作人員每掃描一份快遞面單,系統(tǒng)會(huì)記錄一條數(shù)據(jù)。實(shí)驗(yàn)的數(shù)據(jù)選取自內(nèi)蒙古自治區(qū)郵政行業(yè)大數(shù)據(jù)信息統(tǒng)計(jì)系統(tǒng)內(nèi)數(shù)據(jù),由中通快遞公司提供。此數(shù)據(jù)為掃描快遞面單的部分信息,共有A~K等11個(gè)字段,如掃描時(shí)間、快遞單號(hào)等。遞面單信息的部分?jǐn)?shù)據(jù)截圖如圖5所示。
3.3 "集群負(fù)載均衡實(shí)驗(yàn)
同構(gòu)條件下,在VMware Workstation軟件配置虛擬機(jī)階段,對(duì)一臺(tái)節(jié)點(diǎn)服務(wù)器配置完成后,再次復(fù)制此虛擬機(jī),以達(dá)到從節(jié)點(diǎn)配置統(tǒng)一、負(fù)載因子一致的效果。使用3.2節(jié)中的實(shí)驗(yàn)數(shù)據(jù),將快遞單號(hào)作為唯一標(biāo)識(shí)符,映射到哈希環(huán)上,真實(shí)服務(wù)器以IP地址同樣映射到環(huán)上,使用IntelliJ IDEA開發(fā)軟件編寫Java代碼,將改進(jìn)的一致性哈希通過(guò)API連接到Hadoop的存儲(chǔ)接口,覆蓋其自帶塊存儲(chǔ)策略。在同一大小數(shù)據(jù)下,進(jìn)行多次數(shù)據(jù)存放實(shí)驗(yàn)取統(tǒng)計(jì)平均,可以得到不同存儲(chǔ)節(jié)點(diǎn)的負(fù)載差值,結(jié)果如圖6所示。
系統(tǒng)中,所有節(jié)點(diǎn)負(fù)載數(shù)據(jù)量最大和最小的差值與節(jié)點(diǎn)平均負(fù)載值的比率為負(fù)載率差值。理想的負(fù)載率差值應(yīng)是根據(jù)系統(tǒng)節(jié)點(diǎn)數(shù)量的變化維持在穩(wěn)定的水平上。
本文算法基于權(quán)值的虛擬節(jié)點(diǎn)一致性哈希在數(shù)據(jù)劃分中,節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)量取決于負(fù)載因子大小。集群配置相同時(shí),從圖6可以看到,本文算法與普通虛擬節(jié)點(diǎn)的一致性哈希存儲(chǔ)數(shù)據(jù)策略相差不大,不同集群規(guī)模在劃分?jǐn)?shù)據(jù)時(shí),節(jié)點(diǎn)中負(fù)載差值在5%~8%,相比HDFS存儲(chǔ)數(shù)據(jù)的分配策略有一定提升??梢酝茰y(cè)到,隨著測(cè)試實(shí)驗(yàn)數(shù)據(jù)量與集群存儲(chǔ)節(jié)點(diǎn)數(shù)量的增多,測(cè)試結(jié)果也將穩(wěn)定在這一區(qū)間內(nèi)。
在虛擬機(jī)的配置階段,將存儲(chǔ)節(jié)點(diǎn)的磁盤空間設(shè)置為各不相同,以區(qū)分負(fù)載因子,設(shè)置集群的異構(gòu)條件。重復(fù)上一實(shí)驗(yàn)步驟,將數(shù)據(jù)分發(fā)給不同從節(jié)點(diǎn),進(jìn)行多次數(shù)據(jù)存放實(shí)驗(yàn)取統(tǒng)計(jì)平均,得到不同從節(jié)點(diǎn)的負(fù)載差值,如圖7所示。
可以看到,HDFS與虛擬節(jié)點(diǎn)的一致性哈希兩種數(shù)據(jù)存儲(chǔ)策略在面對(duì)異構(gòu)集群時(shí),負(fù)載差值波動(dòng)較大,原因是兩種策略并沒有對(duì)集群的節(jié)點(diǎn)間性能不同進(jìn)行針對(duì)性的優(yōu)化,導(dǎo)致在此情況下,負(fù)載差值相近;而本文算法根據(jù)設(shè)定好的負(fù)載因子,計(jì)算節(jié)點(diǎn)在分配數(shù)據(jù)時(shí)按結(jié)果進(jìn)行比例劃分,隨著數(shù)據(jù)量與節(jié)點(diǎn)數(shù)量的增加,可以推測(cè)整個(gè)集群的負(fù)載差值穩(wěn)定在6%左右,集群負(fù)載差值明顯降低。
為驗(yàn)證集群動(dòng)態(tài)數(shù)據(jù)均衡情況,在圖7基礎(chǔ)上,對(duì)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行10 000次讀寫操作,進(jìn)行數(shù)據(jù)節(jié)點(diǎn)間負(fù)載轉(zhuǎn)移策略實(shí)驗(yàn),結(jié)果如圖8所示。可以看到相比HDFS存儲(chǔ)策略,使用虛擬節(jié)點(diǎn)的一致性哈希節(jié)點(diǎn)數(shù)據(jù)分布相對(duì)更均勻,負(fù)載差值穩(wěn)定在23%左右;本文算法引入周期(T=30 s)節(jié)點(diǎn)負(fù)載轉(zhuǎn)移思想,實(shí)現(xiàn)集群動(dòng)態(tài)自適應(yīng)調(diào)整數(shù)據(jù),多次測(cè)試取平均,負(fù)載差值達(dá)到10%以下(約為8%),實(shí)用性得到顯著提升,達(dá)到了設(shè)計(jì)的要求。同時(shí),在實(shí)驗(yàn)中的系統(tǒng)負(fù)載變化平緩,節(jié)點(diǎn)數(shù)量發(fā)生變化而整個(gè)負(fù)載沒有較大波動(dòng),說(shuō)明存儲(chǔ)系統(tǒng)中增刪節(jié)點(diǎn)的操作不會(huì)對(duì)系統(tǒng)造成過(guò)大的影響。
4 "結(jié) "語(yǔ)
本文基于Hadoop平臺(tái)下HDFS分布式系統(tǒng),使用分布式思想來(lái)解決日益增多的郵政數(shù)據(jù)的存放問(wèn)題。實(shí)驗(yàn)結(jié)果表明,文章提出的改進(jìn)算法與HDFS、普通一致性哈希相比,在不同條件下集群負(fù)載差值均有不同程度的提升,證明了該策略可以有效降低集群節(jié)點(diǎn)間負(fù)載差值。實(shí)驗(yàn)驗(yàn)證了加權(quán)輪詢與虛擬節(jié)點(diǎn)的一致性哈希算法相融合的可行性,為郵政企業(yè)面對(duì)海量數(shù)據(jù)的存儲(chǔ)提供新的解決思路。之后準(zhǔn)備搭建真實(shí)的集群環(huán)境,進(jìn)一步進(jìn)行實(shí)驗(yàn),為項(xiàng)目的應(yīng)用進(jìn)行技術(shù)儲(chǔ)備。
注:本文通訊作者為李澤山。
參考文獻(xiàn)
[1] 危華明,廖劍平.海量數(shù)據(jù)存儲(chǔ)中云服務(wù)器性能加速方法仿真[J].計(jì)算機(jī)仿真,2023,40(5):515?519.
[2] 王衛(wèi)鋒,楊林.基于Hadoop的郵政寄遞大數(shù)據(jù)分析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)科學(xué)院大學(xué)學(xué)報(bào),2017,34(3):395?400.
[3] 李朝暉.基于HADOOP平臺(tái)及內(nèi)存數(shù)據(jù)庫(kù)架構(gòu)的反洗錢系統(tǒng)[Z].北京:中國(guó)郵政儲(chǔ)蓄銀行股份有限公司,2017?11?01.
[4] 陳偉.一種改進(jìn)的HDFS副本放置策略[J].長(zhǎng)春師范大學(xué)學(xué)報(bào),2018,37(4):15?20.
[5] 邱寧佳,胡小娟,王鵬,等.一致性哈希的數(shù)據(jù)集群存儲(chǔ)優(yōu)化策略研究[J].信息與控制,2016,45(6):747?752.
[6] 李中華,羅尚平,王慧.D?Spillover負(fù)載均衡的算法研究[J].重慶師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,37(6):7?12.
[7] LI R, LI Y, LI W. An integrated load?balancing scheduling algorithm for Nginx?based web application clusters [J]. Journal of physics: conference series, 2018(1): 012078.
[8] 秦加偉,劉輝,方木云.大數(shù)據(jù)平臺(tái)下基于類型的小文件合并方法[J].軟件工程,2020,23(10):12?14.
[9] 聶世強(qiáng),伍衛(wèi)國(guó),張興軍,等.一種基于跳躍hash的對(duì)象分布算法[J].軟件學(xué)報(bào),2017,28(8):1929?1939.
[10] SANCHEZ V A B, KIM W, EOM Y, et al. EclipseMR: distributed and parallel task processing with consistent hashing [C]// IEEE International Conference on Cluster Computing. Honolulu, HI, USA: IEEE, 2017: 322?332.
[11] 劉宏宇,鄭煜.大數(shù)據(jù)在京東物流中的應(yīng)用[J].現(xiàn)代經(jīng)濟(jì)信息,2019(5):374.
[12] 韓超,鄭銳韜,于偉,等.基于一致性哈希算法的分布式數(shù)據(jù)庫(kù)高效擴(kuò)展方法[J].計(jì)算機(jī)科學(xué)與應(yīng)用,2020,10(1):6.
[13] 郭宗睿,湯志鳳.基于一致性哈希算法的分布式數(shù)據(jù)庫(kù)高效擴(kuò)展方法研究[J].通訊世界,2021(2):307?308.
[14] 劉沛津,王柳月,孫昱,等.基于一致性哈希算法的分布式機(jī)電系統(tǒng)海量數(shù)據(jù)存儲(chǔ)策略研究[J].機(jī)床與液壓,2023,51(22):31?38.
[15] 盧麗,孫林夫,鄒益勝.基于一致性哈希環(huán)多主節(jié)點(diǎn)的改進(jìn)實(shí)用拜占庭容錯(cuò)算法[J].計(jì)算機(jī)集成制造系統(tǒng),2023(1):25?35.
[16] 張開琦,劉曉燕,王信,等.基于動(dòng)態(tài)權(quán)重的一致性哈希微服務(wù)負(fù)載均衡優(yōu)化[J].計(jì)算機(jī)工程與科學(xué),2020(8):1339?1344.