Spark作業排程

2021-09-06 13:41:14 字數 1728 閱讀 6669

spark在standalone模式下,預設是使用fifo的模式,我們可以使用spark.cores.max來設定它的最大核心數,使用spark.executor.memory 來設定它的記憶體。

在yarn模式下,使用--num-workers設定worker的數量,使用--worker-memory設定work的記憶體,使用--worker-cores設定worker的核心數。

下面介紹一下怎麼設定spark的排程為fair模式。

在例項化sparkcontext之前,設定spark.scheduler.mode。

system.setproperty("spark.scheduler.mode", "fair")

公平演算法支援把作業提交到排程池裡面,然後給每個排程池設定優先順序來執行,下面是怎麼在程式裡面指定排程池。

context.setlocalproperty("spark.scheduler.pool", "pool1")

上面是設定排程池為pool1,當不需要的時候,可以設定為null。

context.setlocalproperty("spark.scheduler.pool", null)

預設每個排程池在集群裡面是平等共享集群資源的,但是在排程池裡面,作業的執行是fifo的,如果給每個使用者設定乙個排程池,這樣就不會出現遲提交的比先提交的先執行。

下面是設定pool的樣本,詳情可以具體參考conf/fairscheduler.xml.template。

<?

xml version="1.0"

?>

<

allocations

>

<

pool

name

="production"

>

<

schedulingmode

>fair

schedulingmode

>

<

weight

>1

weight

>

<

minshare

>2

minshare

>

pool

>

<

pool

name

="test"

>

<

schedulingmode

>fifo

schedulingmode

>

<

weight

>2

weight

>

<

minshare

>3

minshare

>

pool

>

allocations

>

schedulingmode:fair或者fifo。

weight: 權重,預設是1,設定為2的話,就會比其他排程池獲得2x多的資源,如果設定為-1000,該排程池一有任務就會馬上執行。

我們可以通過spark.scheduler.allocation.file引數來設定這個檔案的位置。

system.setproperty("spark.scheduler.allocation.file", "/path/to/file")

Spark作業排程流程

spark首先會對job進行一系列的rdd轉換操作,並通過rdd之間的依賴關係構建dag 有向無環圖 然後根據rdd依賴關係將rdd劃分到不同的stage中,每個stage按照partition的數量建立多個task,最後將這些task提交到集群的work節點上執行。具體流程如下圖所示 通過rdd構...

Spark作業排程階段分析

spark作為分布式的大資料處理框架必然或涉及到大量的作業排程,如果能夠理解spark中的排程對我們編寫或優化spark程式都是有很大幫助的 在spark中存在轉換操作 transformation operation 與行動操作 action operation 兩種 而轉換操作只是會從乙個rdd...

Spark排程解析

目錄 spark排程解析 1.相關術語 2.作業 階段 任務之間的關係 如何劃分作業 job 如何劃分階段 stage 如何劃分任務 task 總結 3.spark執行流程 參考文獻 driver通常用sparkcontext代表driver cluster manager 指的是在集群上獲取資源的...