虛擬化為Hadoop注入了前所未有的活力,從IT生產管理的角度,表現為以下幾點:
·Hadoop和其他消耗不同類型資源的應用一起部署共享數據中心可以提高總體資源利用率;
·靈活的虛擬機操作使得用戶可以動態的根據數據中心資源創建、擴展自己的Hadoop集群,也可以縮小當前集群、釋放資源支持其他應用如果需要;
·通過與虛擬化架構提供的HA、FT集成,避免了傳統Hadoop集群中的單點失敗,再加之Hadoop本身的數據可靠性,為企業大數據應用提供了可靠保證。
基于這些原因,vSphere Big Data Extensions(BDE)為用戶在虛擬化環境中靈活的部署和管理Hadoop集群提供了有效的支持。除卻這些優勢,虛擬化是否會傷害Hadoop運 行的性能呢?為此,我們在同等規模上做了虛擬化部署和物理部署的Hadoop集群的性能對比和優化,實驗表明虛擬化Hadoop集群可以很好地支持生產環 境。
虛擬化環境和物理環境的性能對比
圖1顯示了性能調優試驗的部署樣式,一臺物理服務器上只部署一臺虛擬機,Tasktracker和Datanode一起跑在同一個節點中。因為每個 虛擬節點可以使用全部的服務器資源,方便進行虛擬化和傳統物理環境部署的Hadoop做性能對比和分析。試驗結果在圖2中顯示,虛擬化Hadoop相對于 物理環境的性能對比幾乎是持平的。
摘要:虛擬化為Hadoop注入了前所未有的活力,從IT生產管理的角度,表現為以下幾點:
圖3顯示了更推薦生產環境使用的部署拓撲,一臺物理服務器上部署多臺虛擬節點。如圖2所示,這種部署將增加資源利用率從而得到更高的性能。
同時,我們把這些實驗經驗內嵌到vSphere BDE部署的Hadoop集群系統配置當中,屏蔽了性能優化的復雜性。雖然不同的數據中心設置和集群配置可能帶來不同的表現,這里按照創建、配置、擴展Hadoop集群的順序跟大家分享一些通用的經驗:
Hadoop虛擬化的調優經驗:
(1)計劃初始規模:集群表現于跟數據中心基礎設施和配置密切相關,建議用戶在一開始對環境表現難以預測的時候,先建立小規模集群,比如5臺或者6臺服務器,部署Hadoop,然后運行標準Hadoop基準了解自己數據中心的特點。然后根據需要逐步添加服務器和存儲等資源。
(2)選擇服務器:CPU建議不要少于2 * Quad-core并且激活HT(Hyper-Threading);為每個計算內核配置至少4G內存,并且預留6%的內存為虛擬化的有效運行。 Hadoop性能對I/O很敏感,建議每臺服務器配置多塊本地存儲而不建議配置少塊大容量的硬盤??紤]任務調度的代價,對于每個計算內核不建議配置超過2 塊本地存儲。為高性能考慮,推薦使用10G網卡??紤]為主節點服務器(運行namenode、Jobtracker)配置雙電源以提高可靠性。
(3)虛擬化配置:本地存儲盡量避免配置成RAID,為每一個物理盤創建一個datastore虛擬化網絡配置時為了可靠性和網絡傳輸效率,隔離管理網絡和Hadoop集群網絡。如圖4所示:
圖4:虛擬化網絡配置
(4)系統設置:BDE將會自動配置根據實驗經驗取得的虛擬磁盤和操作系統參數,向用戶屏蔽性能優化的具體細 節。建議對性能敏感的用戶替換默認模板采用CentOS6*,因為Linux 6.* 內核的THP(TransparentHuge Page)和EPT(Extended PageTables,Intel處理器)可以一起幫助虛擬化性能。
摘要:虛擬化為Hadoop注入了前所未有的活力,從IT生產管理的角度,表現為以下幾點:
(5)Hadoop配置:BDE將會自動產生并配置hadoop配置文件(主要在map- site.xml,core-site.xml,和 hdfs-site.xml內),包括塊大小(blocksize),會話管理和日志功能。但是有一些相關于MapReduce任務的參數,包括 mapred.reduce.parallel.copies,io.sort.mb,io.sort.factor,io.sort.record.percent, 和tasktracker.http.thread,需要根據不同負載具體設置.
(6)擴展建議:如果用戶觀察集群中CPU的利用率經常超過80%,建議加入新的節點。另外單個存貯節點的容量不建議超過24TB,否則一旦節點失敗,數據備份拷貝容易造成數據擁塞。擴展可以按照小規模集群上運行性能基準經驗和資源使用情況進行。