一種MapReduce帶寬優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明設(shè)計(jì)屬于Hadoop云計(jì)算領(lǐng)域,更具體地,涉及一種MapReduce帶寬優(yōu)化方法。
【背景技術(shù)】
[0002]MapReduce分布計(jì)算需要服務(wù)器之間進(jìn)行大量的一對多或多對多的通信。這使得在目前的技術(shù)環(huán)境中,數(shù)據(jù)中心網(wǎng)絡(luò)經(jīng)常發(fā)生擁塞的狀況,從而導(dǎo)致丟包增多、傳輸時(shí)延增大和吞吐量下降。尤其在Hadoop云計(jì)算的MapReduce過程中,當(dāng)主服務(wù)器分配好Map任務(wù)和Reduce任務(wù)后,Map服務(wù)器開始進(jìn)行計(jì)算工作,并將計(jì)算得出的中間值向Reduce服務(wù)器迀移,大量的數(shù)據(jù)在迀移過程中,很容易造成網(wǎng)絡(luò)擁塞,使Reduce服務(wù)器等待時(shí)間過長甚至失敗。數(shù)據(jù)在網(wǎng)絡(luò)傳輸?shù)臅r(shí)間嚴(yán)重降低了整體的工作完成效率。針對這個(gè)問題,研究者提出了一些優(yōu)化方案,如MapReduce列存儲優(yōu)化,MapReduce連接優(yōu)化,MapReduce調(diào)度優(yōu)化等,但上述方案大多存在以下問題:任務(wù)調(diào)度與資源分配沒有分開、調(diào)度部署不夠自動化、無法很好的根據(jù)網(wǎng)絡(luò)狀況優(yōu)化調(diào)度等。
[0003]SDN,也就是Software Defined Network,即軟件定義網(wǎng)絡(luò),由Stanford大學(xué)在Clean Slate計(jì)劃中提出。其設(shè)計(jì)思想主要是將網(wǎng)絡(luò)的控制功能和轉(zhuǎn)發(fā)功能分離開,解除控制平面和數(shù)據(jù)平面的耦合,使得控制平面能夠更有效的提供統(tǒng)一的網(wǎng)絡(luò)監(jiān)控能力。SDN出現(xiàn)之后,學(xué)術(shù)界開始嘗試實(shí)現(xiàn)應(yīng)用層對網(wǎng)絡(luò)流量的分配,研究最為廣泛的是基于SDN的云計(jì)算數(shù)據(jù)中心DCN網(wǎng)絡(luò)優(yōu)化。研究人員提出將SDN與Hadoop結(jié)合起來,利用SDN的可編程網(wǎng)絡(luò)管理優(yōu)勢優(yōu)化Hadoop網(wǎng)絡(luò)性能。目前Hadoop與SDN相結(jié)合的優(yōu)化方案主要分為以下三個(gè)方面:一是通過設(shè)置隊(duì)列優(yōu)先級來提高Hadoop數(shù)據(jù)傳輸效率,二是利用SDN的流量感知和帶寬預(yù)分配的特點(diǎn),三是通過SDN改進(jìn)Hadoop的作業(yè)調(diào)度算法。但這些方案無法從根本上解決MapReduce過程中數(shù)據(jù)傳輸帶寬受限的問題。
[0004]現(xiàn)有的基于SDN的Hadoop優(yōu)化方案通常是通過SDN與上層應(yīng)用結(jié)合來合理分配網(wǎng)絡(luò)流量,或者針對Hadoop的流量特點(diǎn),將網(wǎng)絡(luò)層的流量信息反饋到應(yīng)用層,應(yīng)用層通過調(diào)度算法的改變來規(guī)避擁塞路徑。但當(dāng)大量的數(shù)據(jù)流涌現(xiàn)時(shí),規(guī)避擁塞路徑也無力改變擁塞的局面。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)的以上缺陷,本發(fā)明提供了一種基于中間值合并的MapReduce帶寬優(yōu)化方法,針對MapReduce數(shù)據(jù)迀移過程中的網(wǎng)絡(luò)擁塞問題,將SDN和Hadoop結(jié)合起來,利用OpenFlow交換機(jī)的數(shù)據(jù)處理能力,提前合并處理一部分Map中間值,即經(jīng)map()函數(shù)作用后得到的中間元組數(shù)據(jù),減少M(fèi)apReduce作業(yè)過程中shuffle階段的數(shù)據(jù)流量,從而縮短數(shù)據(jù)迀移時(shí)間,提高Hadoop工作效率。
[0006]為實(shí)現(xiàn)上述目的,本發(fā)明提出了一種MapReduce帶寬優(yōu)化方法,其特征在于,包括以下步驟:
[0007](1)在Hadoop作業(yè)提交后,JobTracker向OpenFlow控制器發(fā)送任務(wù)執(zhí)行節(jié)點(diǎn)信息;
[0008](2) OpenFlow控制器根據(jù)接收的所述任務(wù)執(zhí)行節(jié)點(diǎn)信息,通過Map中間值數(shù)據(jù)的路由策略進(jìn)一步確定執(zhí)行Map中間值合并任務(wù)的節(jié)點(diǎn),更新對應(yīng)的流表項(xiàng),將該流表項(xiàng)下發(fā)到OpenFlow交換機(jī);
[0009](3) OpenFlow交換機(jī)通過安全通道接收并安裝OpenFlow控制器傳來的所述流表項(xiàng),并對接收到的數(shù)據(jù)包進(jìn)行流表項(xiàng)匹配,若數(shù)據(jù)包與流表項(xiàng)匹配成功,執(zhí)行流表項(xiàng)中指令行為類型,對Map中間值進(jìn)行合并。
[0010]作為進(jìn)一步優(yōu)選的,在步驟(2)中,所述Map中間值路由策略是OpenFlow控制器根據(jù)Hadoop作業(yè)調(diào)度結(jié)果得到。
[0011]作為進(jìn)一步優(yōu)選的,在步驟(1)中,所述任務(wù)執(zhí)行節(jié)點(diǎn)信息包括源地址端口、目標(biāo)地址端口、Job ID、Map ID、Reduce ID。
[0012]作為進(jìn)一步優(yōu)選的,所述Map中間值數(shù)據(jù)的路由策略為基于最短路徑路由算法的OpenFlow-MapReduce路由策略,具體包括以下步驟:
[0013](2-1)在OpenFlow網(wǎng)絡(luò)拓?fù)涞娜抗?jié)點(diǎn)中,通過最短路徑路由算法確定數(shù)據(jù)包源節(jié)點(diǎn)s到目的節(jié)點(diǎn)t的最短路徑P。;
[0014](2-2)判斷P。中已分配map任務(wù)的節(jié)點(diǎn)數(shù)是否大于1,若否,跳轉(zhuǎn)至步驟(2_3);若是,則進(jìn)一步確定匕中是否有尚未分配Map中間值合并任務(wù)的節(jié)點(diǎn),若有,則依次為每個(gè)已分配Map任務(wù)的節(jié)點(diǎn)各選定一個(gè)距離其最近且未被占用的節(jié)點(diǎn)作為執(zhí)行Map中間值合并任務(wù)的節(jié)點(diǎn),并更新網(wǎng)絡(luò)拓?fù)洌魺o,則跳轉(zhuǎn)至步驟(2-3);
[0015](2-3)在OpenFlow網(wǎng)絡(luò)拓?fù)渲校懦呀?jīng)尋過的路徑,重新調(diào)用最短路徑算法尋找新的最短路徑p’ C,判斷p’ c中已分配Map任務(wù)的節(jié)點(diǎn)數(shù)是否大于1,若是,則選定并輸出該路徑,依次為每個(gè)已分配Map任務(wù)的節(jié)點(diǎn)各選定一個(gè)距離其最近且未被占用的節(jié)點(diǎn)作為執(zhí)行Map中間值合并任務(wù)的節(jié)點(diǎn),更新網(wǎng)絡(luò)拓?fù)?;若否,則再次執(zhí)行步驟(2-3),直至所有最短路徑搜索完畢,若仍未找到已分配任務(wù)的節(jié)點(diǎn)數(shù)大于1的路徑,則隨機(jī)選取一條最短路徑輸出,并更新網(wǎng)絡(luò)拓?fù)洹?br>[0016]作為進(jìn)一步優(yōu)選的,所述步驟(3)具體包括以下步驟:
[0017](3-1) OpenFlow交換機(jī)通過安全通道接收并安裝OpenFlow控制器傳來的流表項(xiàng);
[0018](3-2) OpenFlow交換機(jī)接收到數(shù)據(jù)包后,先將數(shù)據(jù)包添加到緩存中,然后對其進(jìn)行流表項(xiàng)匹配,若數(shù)據(jù)包匹配到對應(yīng)的流表項(xiàng),跳轉(zhuǎn)到步驟(3-3);若否,則上報(bào)給OpenFlow控制器,等待制訂Map中間值數(shù)據(jù)的路由策略后再交由OpenFlow交換機(jī);
[0019](3-3)執(zhí)行流表項(xiàng)中的指令,若流表項(xiàng)中指令行為是轉(zhuǎn)發(fā),則轉(zhuǎn)發(fā)數(shù)據(jù)包到對應(yīng)目的端口;若指令行為列表中的行為是OpenFlow交換機(jī)中現(xiàn)有行為類型,則按照OpenFlow交換機(jī)固有代碼執(zhí)行相應(yīng)行為;若指令行為類型并非上述兩種類型,則判定指令行為列表中的行為類型是系統(tǒng)內(nèi)核無法處理的類型,跳轉(zhuǎn)到步驟(3-4);
[0020](3-4)解析數(shù)據(jù)包包頭的MapReduce作業(yè)信息,包括Job ID、Map ID和Reduce ID,并轉(zhuǎn)換數(shù)據(jù)包格式,得到新數(shù)據(jù)包;
[0021](3-5)針對步驟(3-4)中的新數(shù)據(jù)包,查詢是否有對應(yīng)的ReducelD隊(duì)列存在,若存在,則將所述新數(shù)據(jù)包通過Reduce操作插入隊(duì)列中等待進(jìn)行Map中間值合并;若不存在,則將該新數(shù)據(jù)包放入新隊(duì)列中等待處理;
[0022](3-6)對Map中間值合并后的數(shù)據(jù)包進(jìn)行流水線處理,重新匹配流表,轉(zhuǎn)發(fā)給下一跳OpenFlow交換機(jī)。
[0023]作為進(jìn)一步優(yōu)選的,所述OpenFlow交換機(jī)中現(xiàn)有行為類型包括更新行為集合、更新數(shù)據(jù)包、更新匹配域及更新元數(shù)據(jù)。
[0024]作為進(jìn)一步優(yōu)選的,所述新數(shù)據(jù)包中包括:原數(shù)據(jù)包、原數(shù)據(jù)包所屬的JobID、原數(shù)據(jù)包即將發(fā)往的ReducelD、原數(shù)據(jù)包的MapID、合并的Map數(shù)目、合并過的MapID及數(shù)據(jù)包存活時(shí)間deadline。
[0025]總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,主要具備以下的技術(shù)優(yōu)點(diǎn):
[0026]1.本發(fā)明通過在Hadoop的MapReduce中應(yīng)用SDN,利用OpenFlow交換機(jī)的數(shù)據(jù)處理能力,提前合并處理一部分Map中間值,減少M(fèi)apReduce作業(yè)過程中shuffle階段的數(shù)據(jù)流量,從而大大縮短了數(shù)據(jù)迀移時(shí)間,顯著提高了 Hadoop工作效率;
[0027]2.本發(fā)明通過提出的Map中間值路由策略,進(jìn)一步確定執(zhí)行Map中間值合并任務(wù)的Reduce節(jié)點(diǎn),解決了數(shù)據(jù)迀移過程中的網(wǎng)絡(luò)擁塞問題,尤其適用于網(wǎng)絡(luò)中大量數(shù)據(jù)流涌現(xiàn)時(shí)的應(yīng)用環(huán)境。
【附圖說明】
[0028]圖1為SDN和Hadoop系統(tǒng)下的本發(fā)明MapReduce帶寬優(yōu)化方法示意圖;
[0029]圖2為本發(fā)明Map中間值路由策略流程圖;
[0030]圖3為本發(fā)明數(shù)據(jù)包匹配流表并進(jìn)行Map中間值合并處理流程圖;
[0031]圖4為本發(fā)明Map中間值合并處理流程圖。
【具體實(shí)施方式】
[0032]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
[0033]圖1為SDN和Hadoop系統(tǒng)下的本發(fā)明MapReduce帶寬優(yōu)化方法示意圖。包括:
[0034](1)在Hadoop作業(yè)提交后,JobTracker向OpenFlow控制器發(fā)送任務(wù)執(zhí)行節(jié)點(diǎn)信息;
[0035](2) OpenFlow控制器根據(jù)接收的所述任務(wù)執(zhí)行節(jié)點(diǎn)信息,通過Map中間值數(shù)據(jù)的路由策略進(jìn)一步確定執(zhí)行Map中間值合并任務(wù)的節(jié)點(diǎn),更新對應(yīng)的流表項(xiàng),將該流表項(xiàng)下發(fā)到OpenFlow交換機(jī);
[0036](3) OpenFlow交換機(jī)通過安全通道接收并安裝OpenFl