亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        結(jié)合節(jié)點(diǎn)計算能力的MapReduce負(fù)載均衡方法

        2023-12-29 12:36:46胡林發(fā)付曉東劉利軍
        關(guān)鍵詞:關(guān)鍵字數(shù)據(jù)量計算能力

        胡林發(fā),付曉東,2,劉 驪,劉利軍

        (1.昆明理工大學(xué) 信息工程與自動化學(xué)院,昆明 650500;2.昆明理工大學(xué) 云南省計算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,昆明 650500)

        0 引 言

        隨著互聯(lián)網(wǎng)的迅猛發(fā)展,尤其是移動互聯(lián)網(wǎng)的應(yīng)用和大數(shù)據(jù)的普及,數(shù)據(jù)量迎來爆炸式增長。MapReduce作為一種分布式計算模型,被廣泛應(yīng)用在大規(guī)模數(shù)據(jù)并行計算過程中[1-2]。目前針對MapReduce有多種實(shí)現(xiàn),如Apache的開源Hadoop框架,將MapReduce和HDFS分布式文件系統(tǒng)進(jìn)行完美融合,深受工業(yè)界和學(xué)術(shù)界的青睞[3]。

        數(shù)據(jù)均衡劃分是MapReduce框架在Shuffle階段需要解決的一個重要問題。用戶提交的作業(yè)(Job)由一系列分別運(yùn)行在多臺機(jī)器上的Map任務(wù)(Mapper)和Reduce任務(wù)(Reducer)處理完成,作業(yè)的完成時間由運(yùn)行最慢的Reducer決定[4-5]。Hadoop系統(tǒng)默認(rèn)采用Hash分區(qū)方法,即僅根據(jù)關(guān)鍵字的哈希值和分區(qū)個數(shù)確定關(guān)鍵字的分區(qū),這種劃分方法雖然可以保證每個分區(qū)里不同關(guān)鍵字種類數(shù)大致相等,但每種關(guān)鍵字?jǐn)y帶的數(shù)據(jù)記錄條數(shù)不一定相等,這會使各分區(qū)數(shù)據(jù)總量大小相差懸殊,從而導(dǎo)致各節(jié)點(diǎn)負(fù)載不均衡問題。研究表明,采用默認(rèn)的Hash分區(qū)方法,超過90%的作業(yè)任務(wù)出現(xiàn)了Reducer負(fù)載不均衡情況,運(yùn)行時間高出正常任務(wù)的22%-38%[6]。先完成任務(wù)的節(jié)點(diǎn)需要等待滯后節(jié)點(diǎn)任務(wù)全部完成才能結(jié)束當(dāng)前作業(yè),若中間數(shù)據(jù)過于集中在某部分Reducer任務(wù)節(jié)點(diǎn),先完成任務(wù)的節(jié)點(diǎn)必須等待其他節(jié)點(diǎn),這個過程會造成集群資源浪費(fèi),延長整體作業(yè)完成時間,甚至某些節(jié)點(diǎn)因資源不足導(dǎo)致任務(wù)中斷,使作業(yè)無法繼續(xù)推進(jìn),從而帶來不好的用戶體驗(yàn)[7-8]。

        文獻(xiàn)[9-10]指出,將Mapper產(chǎn)生的中間數(shù)據(jù)最優(yōu)地劃分到不同分區(qū),使各分區(qū)負(fù)載均衡是一個NP-Hard問題。針對MapReduce框架中存在的負(fù)載均衡問題,目前已有兩階段分區(qū)[11]、多階段分區(qū)[12-13]、數(shù)據(jù)采樣分區(qū)[14-15]、延遲分區(qū)[16]、遷移分區(qū)[17]等方法,這些方法將集群中各節(jié)點(diǎn)看作是計算能力相同的節(jié)點(diǎn),但在實(shí)際數(shù)據(jù)處理過程中不同代的硬件環(huán)境會使每個節(jié)點(diǎn)計算能力不相同[18],且不同計算節(jié)點(diǎn)的性能差異會影響整個系統(tǒng)的計算效率[19]。在異構(gòu)環(huán)境中,即使所有分區(qū)得到相同規(guī)模的數(shù)據(jù),也會因節(jié)點(diǎn)處理能力不同導(dǎo)致Reduce任務(wù)完成時間產(chǎn)生巨大差異,存在先完成任務(wù)的節(jié)點(diǎn)等待滯后節(jié)點(diǎn)的問題,作業(yè)執(zhí)行時間因此會被延長,集群中部分計算資源會被閑置,從而降低了作業(yè)處理效率,浪費(fèi)了計算資源。

        本文提出一種結(jié)合節(jié)點(diǎn)計算能力的劃分方法,即在數(shù)據(jù)劃分時結(jié)合節(jié)點(diǎn)計算能力,使各節(jié)點(diǎn)數(shù)據(jù)負(fù)載與節(jié)點(diǎn)自身的計算能力相匹配,并使大量數(shù)據(jù)在節(jié)點(diǎn)本地處理,降低網(wǎng)絡(luò)傳輸時延,從而提升作業(yè)的處理效率。本文的主要貢獻(xiàn)包括以下3個方面。

        1)提出在異構(gòu)環(huán)境中使用Reservoir算法對Map任務(wù)產(chǎn)生的中間數(shù)據(jù)進(jìn)行抽樣,記錄樣本中關(guān)鍵字的位置和頻次,并以此建立關(guān)鍵字分布矩陣。

        2)提出一種結(jié)合節(jié)點(diǎn)計算能力的分區(qū)劃分方法。在制定分區(qū)計劃時,本文先采用貪心策略對關(guān)鍵字進(jìn)行初步分區(qū),使各關(guān)鍵字劃分到其頻次最高的節(jié)點(diǎn)對應(yīng)分區(qū),然后結(jié)合節(jié)點(diǎn)計算能力并考慮節(jié)點(diǎn)位置關(guān)系對初步劃分結(jié)果進(jìn)行調(diào)整,使各分區(qū)負(fù)載均衡。

        3)設(shè)計了一種均衡性衡量方法,該方法綜合考慮了數(shù)據(jù)量和節(jié)點(diǎn)的計算能力值,有利于更加全面地衡量分區(qū)結(jié)果的均衡性。

        1 異構(gòu)環(huán)境中負(fù)載均衡問題

        在MapReduce處理作業(yè)時,作業(yè)任務(wù)分為Map和Reduce任務(wù)。執(zhí)行任務(wù)的函數(shù)均由用戶根據(jù)業(yè)務(wù)需求自定義。將集群中節(jié)點(diǎn)數(shù)記為r,節(jié)點(diǎn)集合為N={n1,n2,…,nr},分區(qū)集合為P={p1,p2,…,pr},其中pj(j=1,2…,r)為一個分區(qū)。為方便集合節(jié)點(diǎn)計算能力劃分,這里將pj分區(qū)里所有數(shù)據(jù)作為節(jié)點(diǎn)nj上Reduce任務(wù)的輸入。Map任務(wù)產(chǎn)生的中間數(shù)據(jù)為鍵值對形式,分區(qū)算法會將中間數(shù)據(jù)按照關(guān)鍵字劃分到不同分區(qū)。由Reduce任務(wù)輸入限制知,相同關(guān)鍵字的數(shù)據(jù)只能被同一個Reduce任務(wù)處理,即?i≠j且i,j=1,2,…,r,pi∩pj=?。

        分區(qū)集合里每個分區(qū)的實(shí)際數(shù)據(jù)量大小為S={s1,s2,…,sr},令C={c1,c2,…,cr}表示每個節(jié)點(diǎn)的計算能力值,τ(τ>0)為可設(shè)定的閾值,當(dāng)滿足

        (1)

        時,集群節(jié)點(diǎn)負(fù)載不均衡。

        (2)

        將分區(qū)劃分方法記為Π(x),則在Shuffle階段關(guān)鍵字kt會根據(jù)Π(x)計算得到分區(qū)pj←Π(kt),j=1,2,…,r,然后關(guān)鍵字kt會被劃分到分區(qū)pj中。此時,其他節(jié)點(diǎn)上關(guān)鍵字為kt的數(shù)據(jù)需要通過網(wǎng)絡(luò)傳輸?shù)絥j(j=1,2,…,r),則關(guān)鍵字kt需要在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)總量為

        (3)

        關(guān)鍵字K={k1,k2,…,kΩ}中所有關(guān)鍵字在經(jīng)過分區(qū)方法Π(x)劃分之后,共需在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)總量用VTRS表示,則

        (pj=Π(kt),j=1,2,…,r)

        (4)

        (5)

        VTRS值大小取決于VLocality值大小,當(dāng)VLocality越大時,VTRS越小,需要在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)就會越少。

        在執(zhí)行Reduce任務(wù)時,節(jié)點(diǎn)nj(j=1,2,…,r)上處理pj分區(qū)里的數(shù)據(jù),將pj數(shù)據(jù)總量記為sj,用FoS(factor of skew)值SFoS衡量節(jié)點(diǎn)負(fù)載的均衡性,計算式為

        (6)

        因此,本文解決的負(fù)載均衡問題為結(jié)合節(jié)點(diǎn)的計算能力值,尋找一種分區(qū)劃分方法Π(x),使SFoS盡可能小,讓各節(jié)點(diǎn)負(fù)載接近,同時降低網(wǎng)絡(luò)開銷,從而提高作業(yè)的處理效率。

        2 結(jié)合節(jié)點(diǎn)計算能力的負(fù)載均衡方法

        針對異構(gòu)集群環(huán)境中負(fù)載不均衡問題,本文提出結(jié)合節(jié)點(diǎn)計算能力的分區(qū)方法LBCC(load balancing in MapReduce combined with computing capacity)。在節(jié)點(diǎn)加入到集群時,各節(jié)點(diǎn)上運(yùn)行測試程序,執(zhí)行默認(rèn)計算任務(wù)。將測試數(shù)據(jù)集的大小記為V,在節(jié)點(diǎn)nj上任務(wù)完成所需時間記為Tj,則可得出節(jié)點(diǎn)nj計算能力值cj=V/Tj,節(jié)點(diǎn)計算能力值集合記為C={c1,c2,…,cr}。在搭建Hadoop環(huán)境時,利用配置文件core.xml配置節(jié)點(diǎn)的所屬機(jī)架信息,方便后續(xù)利用節(jié)點(diǎn)機(jī)架信息調(diào)整節(jié)點(diǎn)負(fù)載。

        為使各節(jié)點(diǎn)負(fù)載均衡并降低Shuffle過程中網(wǎng)絡(luò)通信開銷,本文在執(zhí)行用戶提交的計算作業(yè)之前,先運(yùn)行一個抽樣作業(yè)進(jìn)行數(shù)據(jù)抽樣,并統(tǒng)計樣本數(shù)據(jù)里關(guān)鍵字的位置和頻次分布,由此得到關(guān)鍵字分布矩陣M,然后結(jié)合M和節(jié)點(diǎn)計算能力值,經(jīng)過位置劃分篩選高低分區(qū)以及分區(qū)調(diào)整等步驟制定分區(qū)計劃并將其寫進(jìn)緩存文件fcache。分區(qū)計劃是計算作業(yè)分區(qū)劃分的依據(jù),使計算作業(yè)任務(wù)運(yùn)行時各節(jié)點(diǎn)負(fù)載均衡,從而提高集群資源的利用率和作業(yè)執(zhí)行效率。

        2.1 運(yùn)行抽樣作業(yè)

        在抽樣作業(yè)Map階段采用Reservoir抽樣算法對數(shù)據(jù)集進(jìn)行抽樣,然后在Reduce階段匯總各節(jié)點(diǎn)樣本數(shù)據(jù),依據(jù)樣本里的關(guān)鍵字位置和頻次信息建立關(guān)鍵字分布矩陣,并根據(jù)分布矩陣和節(jié)點(diǎn)計算能力信息制定分區(qū)計劃。

        在抽樣作業(yè)Map任務(wù)階段,首先初始化一個關(guān)鍵字集合KL,再按行讀取數(shù)據(jù)集并將數(shù)據(jù)集中的關(guān)鍵字逐一添加進(jìn)KL中,具體過程如算法1所示。

        算法1對數(shù)據(jù)集中關(guān)鍵字進(jìn)行抽樣

        輸入:數(shù)據(jù)集分片β,樣本容量α。

        輸出:關(guān)鍵字樣本集合KL.

        1.KL←?;

        2.cnt←0;

        3.forlineinβdo

        4.k←getKey(line);

        5.cnt++;

        6.ifKL.size()<αthen

        7.KL.add(k);

        8.else

        9.t←random.nextInt(0,cnt);

        10.ift<αthen

        11.KL.replace(t,k);

        12.end if

        13.end if

        14.end for

        15.outputKL;

        當(dāng)VLocality取最大值時,VTRS取得最小值,需要在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量最少。顯然,對于任意kt,若pj←Π(kt)且滿足

        (7)

        時,VLocality可以取最大值。這里先采用貪心方法,逐一將K={k1,k2,…,kΩ}里關(guān)鍵字分配到可以使VLocality值取最大值的分區(qū),由此得到初次劃分結(jié)果,然后在此基礎(chǔ)上將各分區(qū)里關(guān)鍵字進(jìn)行調(diào)整,使各分區(qū)負(fù)載接近分區(qū)期望值,具體過程如算法2所示。

        算法2制定分區(qū)計劃

        輸入:二維矩陣M=[mtj]Ω×r,C={c1,c2,…,cr}.

        輸出:分區(qū)計劃P={p1,p2,…,pr}.

        1.pj←?(j=1,2,…,r);

        2.fort←1 toΩdo

        3.mtj←max{mt1,mt2,…,mtr};

        4.j←getNodeIndex(mtj);

        5.pj←pj.add(kt);

        6.end for

        8.PH←?,PL←?;

        9.forj←1 tordo

        12.ifsj>ejthen

        13.PH←PH∪{pj};

        14.else

        15.PL←PL∪{pj};

        16.end if

        17.end for

        18.forh←1 toPH.size() do

        19.pi←PH.get(h);

        20.forktinpido

        21.pj←getMinNearPartition(PL,pi);

        22.pj.add(kt);

        24.PL.remove(pj);

        25.end if

        26.pi.remove(kt);

        28.break;

        29.end if

        30.end for

        31.end for

        32.outputP={p1,p2,…,pr}.

        算法2中,第2—第6行表示依次將關(guān)鍵字kt劃分到kt頻次最大的節(jié)點(diǎn)對應(yīng)分區(qū)上, 直到所有關(guān)鍵字劃分完畢,得到初步劃分結(jié)果P={p1,p2,…,pr}。此時,VLocality取最大值,需要在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量最小。然而,此時并沒有考慮節(jié)點(diǎn)負(fù)載均衡性,還需要對初步分區(qū)計劃進(jìn)行調(diào)整。對于分區(qū)pj(j=1,2,…,r),sj為pj分區(qū)里數(shù)據(jù)總量,每個節(jié)點(diǎn)負(fù)載期望值用ej表示,ej表達(dá)式為

        (8)

        算法2中第7—第17行表示將分區(qū)按照實(shí)際負(fù)載是否高于均衡值劃分為高分區(qū)和低分區(qū),若分區(qū)sj>ej則將pj加入高分區(qū)集合PH,否則加低分區(qū)集合PL。逐漸從高分區(qū)里移出關(guān)鍵字?jǐn)?shù)據(jù),當(dāng)高分區(qū)的實(shí)際總數(shù)據(jù)量低于期望值時則停止移出。第18—第30行表示收集高分區(qū)里的關(guān)鍵字,并且將從高分區(qū)移出的關(guān)鍵字逐一分配給PL中的低分區(qū),從而使低分區(qū)數(shù)據(jù)量逐漸接近期望值。若在關(guān)鍵字調(diào)整的過程中,當(dāng)某低分區(qū)實(shí)際數(shù)據(jù)量高于均衡值時,則將該低分區(qū)移出集合PL。

        算法2中g(shù)etMinNearPartition方法是為了在集合PL中尋找離分區(qū)pi最近的節(jié)點(diǎn)分區(qū),首先在PL中尋找與pi同一機(jī)架且分區(qū)負(fù)載最小的分區(qū),若存在直接返回,不存在則在其他機(jī)架上尋找,具體過程如算法3。

        算法3getMinNearPartition方法實(shí)現(xiàn)

        輸入:低分區(qū)集合PL,分區(qū)pi.

        輸出:PL中離pi最近的分區(qū)p.

        1.p←null;

        2.flag←0;

        3.forpjinPLdo

        4.ifrack(pi)=rack(pj) then

        5.ifp!=null&&getLoad(p)>getLoad(pj)

        ||p=nullthen

        6.p←pj;

        7.flag←1;

        8.end if

        9.end if

        10.end for

        11.ifflag=1 then

        12.returnp;

        13.end if

        14.returnminLoad(PL);

        算法3中第3—第10行表示在集合中尋找與分區(qū)pi關(guān)聯(lián)節(jié)點(diǎn)ni同一機(jī)架的其他節(jié)點(diǎn)對應(yīng)分區(qū),其中,第4行rack方法的作用是獲取分區(qū)的機(jī)架位置,第5行g(shù)etLoad方法表示求取分區(qū)的實(shí)際負(fù)載大小,分區(qū)pj的負(fù)載計算方法可表示為

        (9)

        算法3中第11—第14行表示如果在PL中找到了合適分區(qū)就直接返回,若沒有找到則利用minLoad方法求取整個PL集合中負(fù)載最小的分區(qū)作為返回結(jié)果。

        算法2初步劃分過程中,需要遍歷分布矩陣M中所有行,時間復(fù)雜度為O(Ω·r)。在分區(qū)篩選過程中遍歷分區(qū)集合P={p1,p2,…,pr},時間復(fù)雜度為O(r)。在分區(qū)調(diào)整時,需要先將高分區(qū)進(jìn)行排序,這個過程時間復(fù)雜度取決于采用的排序算法,本文采用快速排序,所以時間復(fù)雜度為O(ΩlogΩ)。在將高分區(qū)里部分關(guān)鍵字調(diào)整到低分區(qū)時,需要通過算法3尋找合適分區(qū),最好的情況下只有少量關(guān)鍵字需要進(jìn)行調(diào)整,時間復(fù)雜度為O(r),而在最壞的情況下,大量關(guān)鍵字需要進(jìn)行調(diào)整,此時時間復(fù)雜度為O(Ω·r)。綜上,算法2的時間復(fù)雜度為O(ΩlogΩ)。

        整個抽樣作業(yè)的輸出分區(qū)計劃為P={p1,p2,…,pr}。為方便計算作業(yè)利用分區(qū)計劃進(jìn)行分區(qū),這里將其轉(zhuǎn)化為以關(guān)鍵字kt為鍵、以kt所屬分區(qū)編號為值的鍵值對形式,并將其寫入到緩存文件。

        2.2 執(zhí)行計算作業(yè)任務(wù)

        計算作業(yè)以全量數(shù)據(jù)為輸入,并按照制定的計劃進(jìn)行分區(qū)。在Mapper階段讀取緩存文件fcache,并將其轉(zhuǎn)化為以關(guān)鍵字kt為鍵、分區(qū)編號為值的鍵值對結(jié)構(gòu),將其記為F。分區(qū)方法Π(kt)首先在F中查找是否存在關(guān)鍵字kt,若存在則直接輸出分區(qū)pj(j=1,2,…,r),否則按照Hash方法得到pj,分區(qū)流程如圖1所示。

        圖1 分區(qū)劃分流程圖Fig.1 Partition flow chart

        由于在抽樣過程中,可能存在少量頻率較小的關(guān)鍵字可能沒有被抽樣到,所以在這里使用Hash方法作為輔助方法。任意關(guān)鍵字kt根據(jù)Π(kt)計算得到分區(qū)pj后,將關(guān)鍵字kt與其攜帶的數(shù)據(jù)寫入到pj分區(qū)文件中。在計算作業(yè)Reduce階段各計算節(jié)點(diǎn)分別從Map任務(wù)節(jié)點(diǎn)拉取屬于本節(jié)點(diǎn)的中間數(shù)據(jù)分區(qū)文件,并運(yùn)行Reduce任務(wù),直至任務(wù)運(yùn)行結(jié)束,輸出作業(yè)的計算結(jié)果。

        3 實(shí) 驗(yàn)

        本文LBCC方法在分區(qū)劃分時考慮各節(jié)點(diǎn)計算能力的同時,對網(wǎng)絡(luò)傳輸開銷進(jìn)行了優(yōu)化。為驗(yàn)證本文方法效果,采用NoLFA方法[20]、SBaSC方法[21]和DEFH(default Hash)方法對比。NoLFA方法基于LEEN思想并結(jié)合了節(jié)點(diǎn)計算能力的差異性,適用于異構(gòu)集群環(huán)境,但其與本文方法相比有以下幾點(diǎn)不同:①NoLFA方法直接在計算作業(yè)執(zhí)行過程中通過主節(jié)點(diǎn)獲取關(guān)鍵字頻次信息,這增加了主節(jié)點(diǎn)負(fù)擔(dān),降低了集群元數(shù)據(jù)處理效率,本文使用抽樣作業(yè)得到關(guān)鍵字頻次分布信息,避免了元數(shù)據(jù)處理效率降低問題;②分區(qū)計劃制定時,NoLFA方法直接按照LEEN方法思想進(jìn)行處理,而本文方法在做了一次初步劃分之后,對低分區(qū)進(jìn)行調(diào)整,可以快速使最低分區(qū)總數(shù)量達(dá)到均衡值,而且本文方法分區(qū)均衡性比NoLFA方法更好;③本文方法在調(diào)整分區(qū)負(fù)載過程中同時考慮了節(jié)點(diǎn)計算能力和節(jié)點(diǎn)位置差異,能更好地適應(yīng)異構(gòu)集群環(huán)境。SBaSC方法使用了貪心方法思想劃分分區(qū),達(dá)到了均衡各節(jié)點(diǎn)負(fù)載的目的并且提升了作業(yè)計算效率,但其將集群中所有節(jié)點(diǎn)看作相同的計算能力,忽略了各節(jié)點(diǎn)處理能力的差異性。

        3.1 數(shù)據(jù)集

        為測試傾斜度對算法性能的影響,實(shí)驗(yàn)采用人工數(shù)據(jù)集和2個公開數(shù)據(jù)集。人工數(shù)據(jù)集是使用程序生成不同傾斜率的數(shù)據(jù)集[22],實(shí)驗(yàn)時將人工數(shù)據(jù)集上傳到HDFS系統(tǒng),并讓其分散在不同節(jié)點(diǎn)上進(jìn)行存儲,每組實(shí)驗(yàn)均基于該數(shù)據(jù)集執(zhí)行單詞統(tǒng)計任務(wù)。2個公開數(shù)據(jù)集分別為維基百科數(shù)據(jù)集[2]和社交網(wǎng)絡(luò)數(shù)據(jù)集LiveJournal[21]。維基百科數(shù)據(jù)集包含了大量的文本數(shù)據(jù)信息,實(shí)驗(yàn)時在對該數(shù)據(jù)集進(jìn)行預(yù)處理后將其作為單詞統(tǒng)計作業(yè)的輸入。LiveJournal數(shù)據(jù)集中包含了大約1億個用戶社交網(wǎng)絡(luò)數(shù)據(jù),實(shí)驗(yàn)中使用該數(shù)據(jù)集作為關(guān)聯(lián)用戶數(shù)目統(tǒng)計作業(yè)的輸入。

        3.2 實(shí)驗(yàn)環(huán)境

        實(shí)驗(yàn)采用物理節(jié)點(diǎn)與虛擬節(jié)點(diǎn)結(jié)合的方式,模擬異構(gòu)集群環(huán)境中不同計算能力節(jié)點(diǎn)環(huán)境。每組實(shí)驗(yàn)涉及到的物理機(jī)節(jié)點(diǎn)配置為I3、8核、16 GByte內(nèi)存、500 GByte磁盤空間,虛擬機(jī)節(jié)點(diǎn)在I5機(jī)器上搭建,單個虛擬節(jié)點(diǎn)分配4核、8 GByte內(nèi)存、100 GByte磁盤空間,Hadoop版本為2.10,所有節(jié)點(diǎn)均采用CentOS 6.9系統(tǒng),物理機(jī)節(jié)點(diǎn)和虛擬節(jié)點(diǎn)個數(shù)分別由實(shí)驗(yàn)需求確定。

        3.3 數(shù)據(jù)傾斜程度對性能影響

        通常關(guān)鍵字頻次服從Zipfian分布[4],在關(guān)鍵字列表K={k1,k2,…,kΩ}中,排在λ(λ=1,2,…,Ω)位置的關(guān)鍵字出現(xiàn)頻率f(λ)可以表示為

        (10)

        (10)式中,z≥0為傾斜程度控制參數(shù),z值越大則表示數(shù)據(jù)集中關(guān)鍵字的頻次分布越集中,當(dāng)z=0時表示關(guān)鍵字頻率相同,即所有關(guān)鍵字頻次均勻分布。

        分別設(shè)置人工生成不同傾斜率數(shù)據(jù)集傾斜度z=0.2、z=0.4、z=0.6、z=0.8、z=1.0五組實(shí)驗(yàn),實(shí)驗(yàn)前準(zhǔn)備一個關(guān)鍵字個數(shù)為20 000的單詞列表,各關(guān)鍵字根據(jù)(10)式得到關(guān)鍵字頻率f(λ)。在向輸出文件里寫數(shù)據(jù)時,f(λ)作為關(guān)鍵字kλ寫入的概率,以此生成包含10億單詞的數(shù)據(jù)文件。

        配置不同分區(qū)算法并提交單詞統(tǒng)計作業(yè)。搭建包含2個物理節(jié)點(diǎn)和3個虛擬節(jié)點(diǎn)的Hadoop集群環(huán)境,通過文件配置使每個節(jié)點(diǎn)既是DataNode節(jié)點(diǎn)又是NodaManager節(jié)點(diǎn)。實(shí)驗(yàn)結(jié)果匯總信息如表1、圖2—圖3所示。

        表1 在不同傾斜度下的FoS值Tab.1 FoS value at different skew degree

        表1展示的是在不同傾斜度數(shù)據(jù)集作為輸入的情況下各種算法得到的FoS值(表1中,除傾斜度外的數(shù)值為實(shí)際數(shù)值乘以10-5)。不難發(fā)現(xiàn),在各種傾斜度下,本文LBCC方法FoS值最小,即均衡性表現(xiàn)最好,可以使各節(jié)點(diǎn)負(fù)載更加均衡。DEFH方法在各種傾斜度下FoS值都最大,均衡性最差,這樣會導(dǎo)致集群匯中部分節(jié)點(diǎn)負(fù)載遠(yuǎn)高于其他節(jié)點(diǎn),從而降低作業(yè)的執(zhí)行效率。NoLFA方法FoS值比LBCC方法高,最大可以是LBCC方法的236.2倍,說明此時NoLFA分區(qū)結(jié)果節(jié)點(diǎn)負(fù)載均衡程度遠(yuǎn)不如本文LBCC方法。

        圖2 不同傾斜度下本地化率值Fig.2 Locality value at different skew degree

        圖3 不同傾斜度下執(zhí)行時間Fig.3 Execution time at different skew degree

        由圖2可見,在相同數(shù)據(jù)量下,隨著關(guān)鍵字頻次傾斜度的增加,Locality值呈下降趨勢,即需要在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量逐漸增加。DEFH方法、SBaSC方法變化幅度比較小,因其沒有考慮網(wǎng)絡(luò)開銷優(yōu)化,這2種方法需要在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量占總數(shù)據(jù)量20%左右。當(dāng)傾斜率較高時,LBCC方法Locality值會比NoLFA稍低,這是由于在數(shù)據(jù)傾斜率較高時部分關(guān)鍵字在各節(jié)點(diǎn)分布不均勻,本文方法在調(diào)整分區(qū)過程中,為了使各分區(qū)均衡性更好,會結(jié)合節(jié)點(diǎn)計算能力和節(jié)點(diǎn)位置信息將部分關(guān)鍵字調(diào)整到最低分區(qū),會犧牲一部分Locality值,相對于NoLFA方法在傾斜率較高時Locality值會存在一定差距,但比其他方法本地化率更高。

        由圖3可見,在數(shù)據(jù)總量相同且節(jié)點(diǎn)個數(shù)一定情況下,作業(yè)執(zhí)行時間也隨之增大。LBCC方法結(jié)合節(jié)點(diǎn)計算能力將中間數(shù)據(jù)更加均衡地劃分,縮短了整體作業(yè)的完成時間。LBCC方法相較于NoLFA、SBaSC、DEFH方法在效率上都有較大提高。

        3.4 節(jié)點(diǎn)個數(shù)對性能影響

        為測試異構(gòu)環(huán)境下節(jié)點(diǎn)個數(shù)對算法性能的影響,實(shí)驗(yàn)環(huán)境初始設(shè)置為1個物理節(jié)點(diǎn)和2個虛擬節(jié)點(diǎn)共3個節(jié)點(diǎn),之后每組實(shí)驗(yàn)在此基礎(chǔ)上依次增加1個物理節(jié)點(diǎn)和1個虛擬節(jié)點(diǎn),節(jié)點(diǎn)個數(shù)依次設(shè)置為3、5、7、9、11個。本次實(shí)驗(yàn)分別采用維基百科數(shù)據(jù)集和社交網(wǎng)絡(luò)LiveJournal數(shù)據(jù)集,每次配置好環(huán)境后,將數(shù)據(jù)集上傳到HDFS文件系統(tǒng),數(shù)據(jù)文件會以塊的形式分散存儲在集群中各節(jié)點(diǎn)上。實(shí)驗(yàn)中每種算法運(yùn)行多次后求取各項(xiàng)指標(biāo)平均值,匯總信息如表2—表3、圖4—圖7所示。

        表2 在維基百科數(shù)據(jù)集上FoS值Tab.2 FoS value for different number of data nodes on Wikipedia dataset

        表3 在LiveJournal數(shù)據(jù)集上FoS值Tab.3 FoS value for different number of data nodes on LiveJournal dataset

        由表2—表3可知,在不同節(jié)點(diǎn)個數(shù)實(shí)驗(yàn)環(huán)境中,無論采用哪種數(shù)據(jù)集作為作業(yè)的輸入,本文LBCC方法分區(qū)結(jié)果的FoS值最低,即均衡性表現(xiàn)最好,可以使各節(jié)點(diǎn)負(fù)載更加均衡。本文LBCC方法在調(diào)整各節(jié)點(diǎn)負(fù)載時考慮了節(jié)點(diǎn)計算能力,讓各分區(qū)之間的負(fù)載與節(jié)點(diǎn)自身計算能力相匹配,與其他各節(jié)點(diǎn)負(fù)載相均衡。 DEFH方法根據(jù)關(guān)鍵字哈希值進(jìn)行劃分,并沒有考慮各節(jié)點(diǎn)的負(fù)載均衡性,所以FoS值比較大。另外在異構(gòu)環(huán)境中,SBaSC沒有考慮節(jié)點(diǎn)的計算能力,所以導(dǎo)致各節(jié)點(diǎn)負(fù)載差異也很大。

        圖4 在維基百科數(shù)據(jù)集上不同節(jié)點(diǎn)個數(shù)下的本地化率Fig.4 Locality value for different number of nodes on Wikipedia dataset

        圖5 在LiveJournal數(shù)據(jù)集上不同節(jié)點(diǎn)個數(shù)下的 本地化率Fig.5 Locality value for different number of nodes on LiveJournal dataset

        由圖4—圖5可見,隨著節(jié)點(diǎn)的增加,Locality值總體上呈下降趨勢。文獻(xiàn)[5]指出,相同關(guān)鍵字的頻次在集群中各節(jié)點(diǎn)均勻分布時,數(shù)據(jù)本地化率取決于節(jié)點(diǎn)的個數(shù),即VLocality=1/r,在數(shù)據(jù)值上將與公式計算的結(jié)果相等。由此可知,隨著節(jié)點(diǎn)個數(shù)的增加,Locality值會隨之下降。在不同節(jié)點(diǎn)個數(shù)環(huán)境下,NoLFA方法和LBCC方法的分區(qū)結(jié)果中本地化率比較接近,SBaSC和DEFH方法由于沒有考慮網(wǎng)絡(luò)開銷優(yōu)化,Locality值比較低,需要在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量比較大。數(shù)據(jù)集LiveJournal上關(guān)鍵字的頻次比較集中,大量的關(guān)鍵字?jǐn)y帶的數(shù)據(jù)可以在節(jié)點(diǎn)本地進(jìn)行處理,不需要通過網(wǎng)絡(luò)傳輸?shù)狡渌?jié)點(diǎn),所以通過LBCC和NoLFA方法得到的Locality值比較高。

        由圖6—圖7可見,隨著節(jié)點(diǎn)個數(shù)的增加,任務(wù)完成時間逐漸降低。另外,在每組實(shí)驗(yàn)中,本文LBCC方法在效率上優(yōu)于其他分區(qū)方法。圖7中NoLFA和LBCC方法相較于圖6差別較大,這是由于使用NoLFA和LBCC方法可以使社交網(wǎng)絡(luò)LiveJournal數(shù)據(jù)集絕大部分在節(jié)點(diǎn)本地處理,另外在異構(gòu)環(huán)境中,考慮了節(jié)點(diǎn)負(fù)載均衡性,使各節(jié)點(diǎn)的負(fù)載與節(jié)點(diǎn)計算能力相匹配。在維基百科數(shù)據(jù)集上,LBCC方法在作業(yè)運(yùn)行效率上比NoLFA方法提高7.0~15.4百分點(diǎn),比SBaSC方法提高17.9~23.1百分點(diǎn),比DEFH方法提高11.0~30.8百分點(diǎn)。在社交網(wǎng)絡(luò)LiveJournal數(shù)據(jù)集上,LBCC方法在效率上比NoLFA方法提高2.8~7.6百分點(diǎn),比SBaSC方法提高8.1~15.4百分點(diǎn),比DEFH方法提高10.1~15.9百分點(diǎn)。

        圖6 在維基百科數(shù)據(jù)集上不同數(shù)據(jù)節(jié)點(diǎn)下 任務(wù)完成時間Fig.6 Execution time for different nodes on the Wikipedia dataset

        圖7 在LiveJournal數(shù)據(jù)集上不同數(shù)據(jù)節(jié)點(diǎn)下 任務(wù)完成時間Fig.7 Execution time for different number of nodes on LiveJournal dataset

        4 結(jié)束語

        本文提出通過Reservoir抽樣方法獲取Map產(chǎn)生的中間數(shù)據(jù)分布信息,然后結(jié)合節(jié)點(diǎn)計算能力解決MapReduce在分區(qū)過程中的負(fù)載均衡問題。實(shí)驗(yàn)結(jié)果表明,本文方法得到的分區(qū)結(jié)果會使各節(jié)點(diǎn)負(fù)載更為均衡,提高了作業(yè)處理效率,同時優(yōu)化了網(wǎng)絡(luò)傳輸代價。本文方法在集群異構(gòu)的環(huán)境中具有良好的性能優(yōu)勢,計算效率相對于現(xiàn)有分區(qū)方法有顯著提升,為MapReduce計算模型負(fù)載均衡提供了一種更加高效的解決方案。

        猜你喜歡
        關(guān)鍵字數(shù)據(jù)量計算能力
        淺談如何提高小學(xué)生的計算能力
        履職盡責(zé)求實(shí)效 真抓實(shí)干勇作為——十個關(guān)鍵字,盤點(diǎn)江蘇統(tǒng)戰(zhàn)的2021
        華人時刊(2022年1期)2022-04-26 13:39:28
        小學(xué)生計算能力的提高策略
        甘肅教育(2021年10期)2021-11-02 06:14:02
        基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
        計算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
        高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
        小學(xué)生計算能力的培養(yǎng)
        甘肅教育(2020年21期)2020-04-13 08:08:42
        寬帶信號采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計與研究
        電子制作(2019年13期)2020-01-14 03:15:18
        成功避開“關(guān)鍵字”
        淺談小學(xué)生計算能力的培養(yǎng)
        日韩最新在线不卡av| 日韩一区国产二区欧美三区| 成熟丰满熟妇高潮xxxxx视频| 亚洲国产夜色在线观看| 一区二区三区国产偷拍| 亚洲国产丝袜久久久精品一区二区| 国产日产欧洲系列| 一本色道久久99一综合| 国产不卡一区二区av| 午夜精品久久99蜜桃| 在线看无码的免费网站| 亚洲一区二区三区日本久久九| 久久亚洲精彩无码天堂 | 久久精品网站免费观看| 好屌草这里只有精品| 免费高清日本中文| 蜜桃传媒免费观看视频| 疯狂三人交性欧美| 国产乱人伦偷精品视频| 亚洲一区二区情侣| 久久久精品毛片免费观看| 色偷偷偷久久伊人大杳蕉| 亚洲一区综合精品狠狠爱| 久久亚洲精精品中文字幕早川悠里 | 欧美人与动人物牲交免费观看久久| 亚洲国产毛片| 手机在线观看亚洲av| 欧美高清视频手机在在线| 欧美午夜精品一区二区三区电影| 久久99精品中文字幕在| 色婷婷av一区二区三区丝袜美腿 | 国产性猛交╳xxx乱大交| 日韩精品精品一区二区三区| 媚药丝袜美女高清一二区| 男女上下猛烈啪啪免费看| 无码精品色午夜| 人妻av在线一区二区三区| 天堂а在线中文在线新版| 青青视频一区| 日本一级二级三级在线| 国产精品国产三级国产av剧情|