簡體   English   中英

spark的spark調度模式和應用程序隊列之間有什么區別?

[英]what is the difference between spark scheduling mode and application queue in spark?

在測試Spark作業的行為時,提交多個作業以同時運行或稍后提交較小的作業。 我在Spark ui中遇到了兩種設置。 一種是帶有火花的調度模式,如下圖所示

火花中的調度模式

並在調度程序下,如下所示 在此處輸入圖片說明

我想了解兩個設置和搶占之間的區別。 我的要求是,在運行較大的作業時,介於兩者之間提交的小型作業必須獲得資源,而不必等待更長的時間。

讓我解釋一下“ Spark On Yarn”模式。

當您提交scala代碼以觸發spark時,spark客戶端將與yarn交互並啟動yarn應用程序。 此應用程序將對您的Scala代碼中的所有任務負責。 在大多數情況下,每個作業都對應一個Spark動作,例如reduce(),collect()。然后,問題來了,如何在此應用程序中安排不同的作業,例如,在您的應用程序中,出現了3個並發作業,等待執行? 為了解決這個問題,Spark制定了包括FIFO和Fair在內的作業的調度程序規則,也就是說,包括FIFO和Fair在內的spark調度程序處於作業級別 ,而Spark ApplicationMaster負責進行調度工作。 。

但是yarn的調度程序位於Container的級別上 .Yarn不在乎此容器中正在運行的內容,也許該容器是一個Mapper任務,一個Reducer任務,一個Spark Driver進程或一個Spark executor進程等等。 例如,您的MapReduce作業當前要求10個容器,每個容器需要(10g內存和2個vcore),而您的spark應用程序當前要求4個容器,每個容器需要(10g內存和2個vcore)。 紗線必須根據規則決定群集中現在有多少個容器可用,以及應為每個請求分配多少資源,該規則是紗線的調度程序,包括FairScheduler和CapacityScheduler。

通常,您的Spark應用程序從紗線中請求幾個容器,紗線將決定其調度程序當前可為您的Spark應用程序分配多少個容器。分配這些容器后,Spark ApplicationMaster將決定如何在其作業之間分配這些容器。

以下是關於Spark Scheduler的正式文檔: https : //spark.apache.org/docs/2.0.0-preview/job-scheduling.html#scheduling-within-an-application

我認為,如圖所示,Spark.scheduling.mode(Fair / FIFO)用於調度使用FAIR或FIFO策略等提交給任務計划程序的任務集(單階段任務)。這些任務集屬於同一作業。

為了能夠同時運行作業,請在單獨的線程中執行每個作業(轉換+動作)。 將作業提交到DAG后,主線程將被阻塞,直到作業完成並且返回或保存結果為止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM