2012-12-12 30 views

回答

5

我不認爲兩者都可以同時使用。這也沒有意義。你爲什麼要在同一個集羣中使用兩種類型的調度?由於具體的使用情況,兩個調度算法都出現了。

公平調度是一種爲作業分配資源的方法,這樣所有作業平均得到的資源的平均份額隨時間變化。當 有一個作業正在運行時,該作業將使用整個羣集。當提交其他作業 時,空閒的任務插槽將分配給 新作業,以便每個作業獲得大致相同的CPU時間量。 與構成作業隊列的默認Hadoop計劃程序不同,此 可讓短時間作業在合理的時間內完成,而不會損壞長時間的 作業。在用戶數 之間共享羣集也是一種合理的方式。最後,公平分享也可以與工作優先級一起工作 - 優先級被用作權重來確定每個工作應得到的計算時間總和的比例。

公平調度程序產生Facebook的需要在多個用戶之間共享其數據倉庫。 Facebook開始使用Hadoop來管理每天累積的大量內容和日誌數據。最初,每天需要運行數據才能創建報告。然而,隨着Facebook內的其他團體開始使用Hadoop,生產工作的數量也在增加。此外,分析師開始使用數據倉庫通過Hive(面向Hadoop的Facebook類SQL查詢語言)進行臨時查詢,並且在開發人員嘗試使用該數據集時提交了更多的大批量作業。 Facebook的數據團隊考慮爲生產任務構建一個單獨的羣集,但看到這將非常昂貴,因爲數據將不得不被複制,並且兩個羣集的利用率都很低。相反,Facebook構建了Fair Scheduler,它在多個作業之間平均分配資源,並且還支持生產作業的容量保證。公平調度器是基於三個概念:

  • 作業被放置到基於可配置的屬性命名爲「池」 如用戶名,UNIX組或明確標註一份工作,通過一個特定的池是 它的jobconf。
  • 每個池都可以有一個「保證容量」,通過 指定一個配置文件,該配置文件給出了最少數量的映射插槽並減少了要分配給池的插槽。當 池中存在掛起的作業時,它至少會獲得多個插槽,但如果它沒有作業,則其他池可以使用 插槽。
  • 未達到池最低限度的剩餘容量是 在使用公平共享的作業之間分配。公平分享確保隨着時間的推移,每個作業都會獲得大致相同的資源量。 這意味着較短的工作會很快完成,而較長的工作 保證不會餓死。

調度還包括用於簡化管理的多項功能,包括重新加載配置文件在運行時更改池設置,而無需重新啓動羣集上運行的每個用戶和每個池的工作範圍的能力,並使用優先權衡量不同工作的份額。


的CapacityScheduler被設計爲允許共享一大簇 同時也讓每一個組織的最小容量保證。中心思想是Hadoop Map-Reduce集羣中的可用資源在多個組織之間進行分區,這些組織根據計算需要共同爲集羣提供資金。還有一個額外的好處 ,組織可以訪問任何多餘的容量不被 其他人使用。這爲組織提供了具有彈性的 具有成本效益的方式。

Yahoo的容量調度程序提供了與公平調度程序類似的功能,但採用了一種有點不同的理念。在Capacity Scheduler中,您可以定義一些命名隊列。每個隊列都有一個可配置數量的映射和減少插槽。調度程序在包含作業時向每個隊列提供其容量,並在隊列之間共享任何未使用的容量。但是,在每個隊列中,使用具有優先級的FIFO調度,除了一個方面 - 您可以限制每個用戶正在運行的任務的百分比,以便用戶平等地共享一個羣集。換句話說,容量調度器試圖爲每個用戶和每個組織模擬一個單獨的FIFO /優先級集羣,而不是在所有作業之間進行公平分享。容量調度程序還支持在每個隊列上配置等待時間,在此之後,如果其他隊列的任務低於其公平份額,則允許其搶佔其他隊列的任務。

因此,它會歸結爲什麼是你的需要和設置,以決定你應該與哪個調度程序。

Apache hadoop現在支持這兩種類型的調度。自80年代末至少 -

+0

Fairshare調度已在HPC中使用Facebook的創建沒過多久:更詳細的信息,可以在下面的鏈接中找到。由於共享樹存在,我認爲會產生混淆(這個問題),它允許HPC中的fairshare系統提供Hadoop的容量調度程序的功能。 –

+0

我相信他指的是Hadoop項目中的公平份額調度。當然,這個概念可能在馬克·祖克伯格出生之前就已經出現了。 – petersaints

相關問題