為什麼部署 Hadoop 前、應先規劃好網路環境?
Hadoop集群中的各節點通過網路連接起來,而MapReduce則會在網路中傳輸資料,以下簡單列出一些:
1. 寫數據。當向HDFS寫入初始資料或者大塊資料時,會發生資料寫入過程。寫入的資料塊需要備份到其他節點,需要在網路中傳輸這些資料。
2. 作業執行。
2.1 Map階段。在演算法的Map階段,幾乎不需要在網路中傳輸資料。在Map開始階段,當HDFS資料沒有本地性(資料塊不在本機存放區,需要從其他節點複製)時,才需在網路中傳輸資料。
2.2 Shuffle階段。這是作業執行中在網路中傳輸資料的階段,資料傳輸的程度依賴於作業。Mapper階段的輸出內容,會在這個時候傳輸到Reducer進行排序。
2.3 Reduce階段。因為Reducer需要的資料已經從Shufle階段傳來,所以此階段不需要網路傳輸資料。
2.4 Output複製。MapReduce的輸出檔存儲在HDFS上。當將輸出結果寫入HDFS時,產生的備份會在網路中傳輸。
3. 讀數據。當應用程式如網站、索引或者SQL資料庫從HDFS讀取資料時,會發生資料讀取的過程。
另外,網路對Hadoop的控制層非常重要,比如HDFS的命令和維護操作,以及MapReduce架構都受到網路影響。
五種網路特性
針對Hadoop集群環境下的網路環境進行測試,測試結果顯示,一個有彈性的網路對Hadoop集群非常重要;對Hadoop集群具有重要影響的網路特性,以其影響程度從大到小依次排序為:網路可用性和彈性、Burst流量突發處理和佇列深度、網路超載、Datanode網路接入和網路延遲。
1. 網路可用性和彈性。要部署一個高備援和可擴展的網路,支援Hadoop集群的增長。在Datanode之間部署多條鏈路的技術要比那些有單點失效或兩點失效的技術要好。交換機和路由器已經在業界中被證明能為伺服器提供網路可用性。
2. Burst流量突發處理和佇列深度。HDFS的一些操作和MapReduce Job會產生突發流量,如向HDFS載入檔或者把結果檔寫入HDFS都需要通過網路。網路如果處理不了突發流量,就會遺失資料包,所以適當的緩存可以緩解突發流量的影響。確保選擇使用緩存和佇列的交換機和路由器能有效處理流量突發。
3. 網路超載。一個好的網路設計需要考慮到網路中關鍵節點的塞車情況。一個ToR交換機從伺服器接收20Gbps的資料,但是只有2個1Gbps的Uplink口會造成資料包遺失(10:1的比例),嚴重影響集群的性能。過度配置的網路設備亦令價格變得異常昂貴。因此在一般情況下,伺服器接入層可以接受的超載比例為 4:1 左右,接入層和分散層之間,或者核心層的比則為 2:1 左右。
4. Datanode網路接入。要基於集群工作負荷來推薦頻寬配置。一般集群中的節點有1到2條1GB的Uplink,是否選擇10Gbps的伺服器要考慮價格和性能。
5. 網路延遲。交換機和路由器延遲的變化對集群性能的影響有限。相比網路延遲,應用層延遲對任務的影響比例更大。但是網路的延遲會對應用系統造成潛在影響,例如造成不必要的應用切換等。