2015-04-23 65 views
2

我對在這裏是小將軍遺憾,但我是一個有點困惑的作業調度內部是如何工作的火花。從文檔here我得知它是Hadoop Fair Scheduler的某種實現。阿帕奇星火 - 如何在火花內部作業調度定義什麼是用戶,什麼是池

我不能回頭,明白,到底誰是這裏的用戶(是Linux用戶,Hadoop的用戶,火花的客戶呢?)。我也無法理解這裏定義的池如何。例如,在我的hadoop集羣中,我給了兩個不同池的資源分配(讓他們稱爲團隊1和團隊2)。但是在spark集羣中,不會使用不同的池,並且其中的用戶可以實例化它們自己的spark上下文?這再次讓我質疑,當我將屬性設置爲spark.scheduler.pool時,通過了哪些參數。

我的司機如何實例火花背景下有基本的瞭解,然後把他們分爲任務和作業。可能是我錯過了點完全在這裏,但我真的想了解星火的內部調度的動作,任務,內容和工作

回答

2

是如何工作的默認情況下,火花與在那裏工作在FIFO方式執行FIFO調度工作。

但如果你有紗線集羣,紗線具有可插拔的調度,這意味着紗線可以調度器的選擇。如果您正在使用由CDH分發的YARN,您將通過deafult擁有FAIR調度程序,但您也可以使用Capacity scheduler。

如果您使用的紗線通過HDP分佈你將不得不默認容量調度,如果你需要,你可以移動到公平的。

調度程序如何與火花一起使用?

我假設你在YARN上有你的火花簇。

當您在spark中提交作業時,它首先會打擊您的資源管理器。現在你的資源管理器負責所有的調度和分配資源。所以它與在Hadoop中提交工作的基本相同。

調度程序如何工作?

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

CapacityScheduler旨在允許共享大型羣集,同時爲每個組織提供最低容量保證。其核心思想是Hadoop Map-Reduce集羣中的可用資源根據計算需求分爲多個集體資助集羣的組織。還有一個額外的好處是,一個組織可以訪問任何多餘的容量不被他人使用。這爲組織提供了具有成本效益的彈性。

+7

我明白調度器如何在像YARN和mesos這樣的資源管理器上工作。我想我的問題涉及火花的內部調度程序如何工作。我試圖瞭解Spark任務是如何在啓動Spark上下文後分配給JVM資源的,並且Spark驅動程序將它們提交給不同的執行者。所給出的文檔在這方面很不明確,我不明白什麼是公平分享的概念,當涉及到工作中的不同任務時 – Arpit1286

0

Spark內部使用FIFO/FCFS作業調度程序。但是,當你談論這些任務時,它會以循環方式工作。我們將清楚我們是否集中在下面的例子上:

假設,Spark自己隊列中的第一個工作並不需要使用集羣的所有資源;所以,立即在隊列中的第二份工作也將開始執行。現在,兩個工作都在同時運行。爲了執行整個工作,每項工作幾乎沒有要執行的任務。假設第一個作業分配了10個任務,第二個分配了8個任務。然後,這18個任務將以先發制人的方式共享整個集羣的CPU週期。如果您想進一步深入研究,讓我們從執行者開始。

集羣中只有少數執行者。假設數量爲6.因此,在理想條件下,每個執行器將分配3個任務,這3個任務將獲得相同的執行器(單獨的JVM)的CPU時間。

這就是spark在內部調度任務的方式。