在虛擬化的雲環境中,
hadoop
可以有更好的「彈性」,這是雲計算的乙個重要優勢,例如亞馬遜的
emr(elasticmapreduce)
服務,
使用者可以迅速的在雲中根據需求部署乙個
hadoop
集群,執行計算任務,並且使用者可以向集群動態的新增或刪除計算節點。
這裡存在著乙個潛在問題,
haodop
的資料節點並非天生的
「有彈性
」,刪除乙個資料節點意味著需要重新複製儲存在這個節點的資料,這是乙個緩慢的過程,並且占用網路頻寬。
圖1:儲存計算分離
儲存計算分離可以很好的解決這個問題,如上圖所示,我們可以靜態的為每個物理結點部署乙個資料節點,動態的部署和調整每個物理節點上的計算節點。另外可以利用虛擬機器更好的隔離性,為每個租戶提供單獨的計算節點,提供多租戶
(multi-tenancy)
服務。 hve
的資源擴充套件技術就是對
hadoop
計算層的擴充套件,通過增加
hadoop
垂直擴充套件和水平擴充套件的動態性,配合資源共享,最終達到優化資源利用的目的。
虛擬機器之間的資源共享通常是通過資源過量配置來實現的。大多數的虛擬機器
hypervisor
,比如vmware
和xen
,都支援資源過量配置。以
vmware esx
為例,他允許為每個虛擬機器配置預留資源
(reservation)
,最大資源
(limit)
和共享(share)
來控制同一物理機上多個虛擬機器之間的資源共享,以及資源不足時的分配策略。
圖2:資源過量配置
有了這個技術,多個應用之間就可以共享資源,比如在其他應用繁忙的時候,可以使
hadoop
計算節點少占用一部分資源,而在其他應用空閒的時候,
hadoop
節點可以分配到更多資源。
僅僅通過
hypervisor
的資源排程並不能很好的達到資源共享的目的,目前
hadoop
的資源配置是靜態的:
1. 在mapreduce v1
中,資源通過每個
tasktracker
的槽位數配置項配置,槽位就是一定量
cpu和記憶體資源抽象
2. 在mapreduce v2
中,資源通過每個
nodemanager
的cpu
和記憶體配置項直接配置
這些配置已經啟動是無法動態調整的,這樣在計算節點虛擬機器資源不足的情況下,
hadoop
仍然會分配過量的任務到這個節點,任務的執行速度會大幅度降低,從而影響整個集群的效能。
hve的資源擴充套件技術通過動態化
hadoop
資源配置來解決這個問題
: 1.
在計算節點執行過程中,使用者可以動態設定每個計算節點的槽位數
(mrv1)
或者資源數
(mrv2)
2. 當計算節點資源不足時,使用者或者
vhm(virtual hadoop manager)
可以自動調整其資源配置,盡量避免資源競爭導致的效能下降
圖3:mrv1的動態資源調整
圖4:mrv2的動態資源調整
除了對每個計算節點內部的垂直式的資源伸縮,
hadoop
廣為人知的還是其良好的水平可擴充套件性,
hadoop
可以動態的上線或者下線
(decommission)
計算節點。在虛擬化環境中,為支援更好的彈性,計算節點的上下線操作會更加頻繁。
圖5:虛擬化環境下的
hadoop
水平擴充套件
這樣引發乙個問題,就是在下線計算節點時,其上正在執行的任務會被殺死,已經完成的
map任務的中間結果也會丟失,所以強制下線節點會導致大量任務重新執行,延遲整個作業的執行。
hve的資源擴充套件技術通過增加安全下線
(graceful decommission)
功能來解決這個問題:
1. 使用者發出安全下線計算節點命令後,先將該計算節點的槽位數或者資源配置為
0,使其不再接受新任務
2. 等待該計算節點上任務都執行完畢,中間資料也都被使用過之後,再停止該計算節點。
hve的資源擴充套件技術通過對
hadoop
核心新增動態資源特性,以支援對
hadoop
集群計算層的動態的水品和垂直擴充套件,為
hadoop
部署在虛擬化環境中增加了如下優點:
1. 能夠使hadoop
與其他應用,或者多個
hadoop
集群之間動態共享資源,可以根據資源需求動態的擴充套件或者收縮集群,提高資源利用率
; 2.
更好的多租戶支援,通過將不同的使用者的作業隔離在不同的虛擬節點,可以在保證資源利用率的基礎上提高隔離性和安全性。
本文簡要介紹了
hvejira。
1.memoryovercommitment in the esx server:
2.dynamicresource configuration jira: yarn-291, mapreduce-4900
3. graceful decommission jira: yarn-914, mapreduce-5381
關於vsphere big data extensions:
作者介紹
常冰琳(binglin chang)
vmware
開發工程師
hadoop
**貢獻者,參與開發
hadoop
虛擬化擴充套件。在
vmware
hadoop
以及其他分布式系統的設計
和開發工作。
桌面虛擬化之GPU虛擬化
虛擬化技術的變革堪比 cpu晶元的發展,迄今為止,伺服器上的 cpu,記憶體,儲存,io裝置等都已經可以虛擬化,通過在伺服器上部署虛擬機器,可以實現多個虛擬機器例項共享同一硬體資源。隨著虛擬化的應用普及,使用者場景也變得越來越多樣和廣泛。特別是近年來桌面虛擬化市場的紅火,gpu虛擬化技術也開始被越來...
基於docker虛擬化建立hadoop集群
最近想用hadoop做乙個測試,與效能無關的測試,但是可與屌絲的命,手頭沒有太多機器,也租不起雲主機。這裡使用docker進行虛擬化,並搭建hadoop集群,在這裡將過程記錄如下。首先安裝docker,這裡不作詳細介紹,sudo apt get install docker 安裝完成之後,我們可以發...
虛擬化之docker
1,什麼是docker dokcer是應用容器,它是基於系統的虛擬化,他不是基於硬體的虛擬化 kvm 可能這樣說有點抽象,我在知乎看到過乙個比喻,docker思想是 於貨櫃的,在一艘大船上,可以用貨櫃將各種物品分類並打包,那麼這樣就有多個貨櫃,那麼這裡的貨櫃類似於docker了。而這艘大船就類似於我...