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