當我發佈同時作業服務器請求時,他們似乎總是處於FIFO模式。儘管我盡了最大的努力來啓用FAIR調度程序,我如何確保我的請求始終並行處理?如何使用Spark-Jobserver配置FAIR調度程序?
背景:在我的集羣有一個SparkContext到用戶可以發佈請求來處理數據。每個請求可能會作用於不同的數據塊,但操作始終是相同的。一小時一分鐘的工作不應該等待大量的一小時工作完成。
直覺上我希望下面的情況發生(見下面我的配置): 上下文公平的游泳池內運行。每次用戶發送處理某些數據的請求時,Spark都應該拆分公平池並提供一部分羣集資源來處理該新請求。然後每個請求以FIFO模式運行,並行於任何其他併發請求。
下面是我運行同時作業時實際發生的情況: 接口顯示「1公平調度程序池」,並列出一個名爲「default」的活動(FIFO)池。似乎一切都在同一個FIFO池內執行,它本身在FAIR池中單獨運行。我可以看到,我的公平池詳細信息已正確加載到Spark的環境頁面上,但我的請求都以FIFO方式處理。
如何配置我的環境/應用程序,使每個請求實際上是在並行運行給別人?我是否需要爲每個請求創建一個單獨的上下文?我是否可以在我的FAIR池中創建任意數量的相同的FIFO池,然後每次請求時都會選擇一個空池?考慮到Jobserver的目標,似乎這應該都是自動的,並且不是很複雜。以下是我的配置中的一些細節,以防我犯了一個簡單的錯誤。
從local.conf中:
contexts {
mycontext {
spark.scheduler.mode = FAIR
spark.scheduler.allocation file = /home/spark/job-server-1.6.0/scheduler.xml
spark.scheduler.pool = fair_pool
}
}
從scheduler.xml:
<?xml version="1.0"?>
<allocations>
<pool name="fair_pool">
<schedulingMode>FAIR</schedulingMode>
<weight>1</weight>
</pool>
</allocations>
感謝您的任何意見或指針。對不起,術語混淆了 - 「job」這個詞在jobserver中有兩個含義。
謝謝指出缺失的時期。隨着改變,fair_pool開始出現在用戶界面中。但是,作業仍在默認池中運行。 關鍵的改變是添加了'sc.setLocalProperty( 「spark.scheduler.pool」, 「fair_pool」)'在我的Scala代碼。我認爲這可以在我的Jobserver配置文件中指定 - 顯然不是! –
你是對的! – noorul
@grahamS你能創建一個問題嗎? https://github.com/spark-jobserver/spark-jobserver/issues – ZeoS