大數據時代,研究大數據的IT 廠商把研究重心放在優化大數據系統軟件架構、優化業務邏輯、優化數據分析算法、優化節點性能等方向,而忽略了大數據環境基礎設置中網絡環節的評估和優化。本文介紹了思科公司在Hadoop 集羣環境下的網絡架構設計與優化經驗。node
大數據Hadoop環境網絡特性Hadoop 集羣中的各節點經過網絡鏈接起來,並且MapReduce 中的如下過程會在網絡中傳輸數據。算法
(1)寫數據。當向HDFS 寫入初始數據或者大塊數據時,會發生數據寫入過程。寫入的數據塊須要備份到其餘節點,須要在網絡中傳輸這些數據。數據庫
(2)做業執行。緩存
① Map 階段。在算法的Map 階段,幾乎不須要在網絡中傳輸數據。在Map 開始階段,當HDFS 數據沒有本地性(數據塊不在本地存儲,須要從其餘節點拷貝)時,才需在網絡中傳輸數據。服務器
② Shuffle 階段。這是做業執行中在網絡中傳輸數據的階段,數據傳輸的程度依賴於做業。Mapper 階段的輸出內容,會在這個時候傳輸到Reducer 進行排序。網絡
③ Reduce 階段。由於Reducer 須要的數據已經從Shuffle 階段傳來,因此此階段不須要網絡傳輸數據。架構
④ Output 複製。MapReduce 的輸出做爲文件存儲在HDFS 上。當將輸出結果寫入HDFS 時,產生的備份會在網絡中傳輸。app
(3)讀數據。當應用程序如網站、索引或者SQL數據庫從HDFS 讀取數據時,會發生數據讀取的過程。另外,網絡對Hadoop 的控制層很是重要,好比HDFS 的信令和運維操做,以及MapReduce 架構都受到網絡影響。運維
五種網絡特性oop
思科公司針對Hadoop 集羣環境下的網絡環境進行了一個測試,測試結果顯示,一個有彈性的網絡對Hadoop 集羣很是重要;對Hadoop 集羣具備重要影響的網絡特性,以其影響程度從大到小依次排序爲:網絡可用性和彈性、Burst 流量突發處理和隊列深度、網絡過載比、Datanode 網絡接入和網絡延遲。
(1)網絡可用性和彈性。要部署一個高冗餘性和可擴展的網絡,支持Hadoop 集羣的增加。在Datanode之間部署多條鏈路的技術要比那些有單點失效或兩點失效的技術要好。交換機和路由器已經在業界被證實可以爲服務器提供網絡可用性。
(2)Burst 流量突發處理和隊列深度。HDFS 的有些操做和MapReduce Job 會產生突發流量,如向HDFS加載文件或者把結果文件寫入HDFS 都須要經過網絡。網絡若是處理不了突發流量,就會丟棄數據包,因此適當的緩存能夠緩解突發流量的影響。確保選擇使用緩存和隊列的交換機和路由器,來有效處理流量突發。
(3)網絡過載比。一個好的網絡設計須要考慮到網絡中關鍵節點的擁塞狀況。一個ToR 交換機從服務器接收20Gbps 的數據,可是隻有2 個1Gbps 的上聯口會形成數據包丟失(10:1 的過載比),嚴重影響集羣的性能。過分配置的網絡的價格又很是昂貴。通常狀況下,服務器接入層能夠接受的過載比在4:1 左右,接入層和匯聚層之間,或者核心層的過載比在2:1左右。
(4)Datanode 網絡接入。要基於集羣工做負荷來推薦帶寬配置。通常集羣中的節點有1 到2 根1GB 的上聯口。是否選擇10Gbps 的服務器要權衡價格和性能。
(5)網絡延遲。交換機和路由器延遲的變化對集羣性能的影響有限。相比網絡延遲,應用層延遲對任務的影響比例更大。可是網絡的延遲會對應用系統形成潛在的影響,例如形成沒必要要的應用切換等。