歡迎來到魔據教育大數據學院,專注大數據工程師培養!
當前位置:首頁 > 學習資料 > 講師博文 > Spark應用程序之間的調度

Spark應用程序之間的調度

時間:2017-08-17 17:59:08作者:[!--zuozhe--]

        Spark每個應用擁有對應的SparkContext.SparkContext維持整個應用的上下文信息,提供一些核心方法,如runJob可以提交Job。然后,通過主節點的分配獲得獨立的一組Executor JVM進程執行任務。Executor空間內的不同應用之間是不共享的,一個Executor在一個時間段內只能分配給一個應用使用。如果多用戶需要共享集群資源,依據集群管理者的配置,用戶可以通過不同的配置選項來分配管理資源。 對集群管理者來說簡單的配置方式就是靜態配置資源分配規則。例如,在不同的運行模式下,用戶可以通過配置文件中進行集群調度的配置。配置每個應用可以使用的最大資源總量、調度的優先級等。

下面根據不同集群的運行模式配置調度。
1、 Standalone
默認情況下,用戶向以Standalone模式運行的Spark集群提交的應用使用FIFO(先進先出)的順序進行調度。每個應用會獨占所有可用節點的資源。用戶可以通過配置參數spark.cores.max決定一個應用可以在整個集群申請的CPU core數。注意,這個參數不是控制單節點可用多少核。如果用戶沒有配置這個參數,則在Standalone模式下,默認每個應用可以分配由參數spark.deploy.defaultCores決定的可用核數。
2、 Mesos
如果用戶在Mesos上使用Spark,并且想要靜態地配置資源的分配策略,則可以通過配置參數spark.mesos.coarse為true,將Mesos配置為粗粒度調度模式。然后配置參數spark.cores.max來限制應用可以使用的CPU core的最大限額。同時用戶應該對參數spark.executor.memory進行配置,進而限制每個Executor的內存使用量。Mesos中還可以配置動態共享CPU core的執行模式,用戶只需要使用mesos://URL而不配置spark.mesos.coarse參數為true,就能以這種方式執行,使Mesos運行在細粒度調度模型下。在這種模式下,每個Spark應用程序還是會擁有獨立和固定的內存分配,但是當應用占用的一些機器上不再運行任務,機器處于空閑狀態時,其他機器可以使用這些機器上空閑的CPU core來執行任務,相當于復用空閑的CPU提升了資源利用率。這種模式在集群上再運行大量不活躍的應用情景下十分有用,如大量不同用戶發起請求的場景.
3、 YARN
當Spark運行在YARN平臺上時,用戶可以在YARN的客戶端通過配置--num-executors選項控制為這個應用分配多少個Executor,然后通過配置--executor-memory及--executor-cores來控制應用被分到的每個Executor的內存大小和Executor所占用的CPU核數。這樣便可以限制用戶提交的應用不會過多的占用資源,讓不同用戶能夠共享整個集群資源,提升YARN吞吐量。
 
以上3種運行模式都不提供跨應用的共享內存。如果用戶想共享內存數據,Spark官網推薦用戶開發一個單機服務,這個服務可以接收多個對同一個RDD的查詢請求,并返回結果,類似的Shark JDBC Server就是這樣工作的。Spark SQL在新版本中也會提供這樣的功能。

更多大數據相關資訊敬請關注魔據教育,為您分享最及時的大數據資訊。
學習大數據敬請關注魔據教育微信二維碼。
魔據教育微信二維碼

【版權與免責聲明】如發現內容存在版權問題,煩請提供相關信息發郵件至[email protected],我們將及時溝通與處理。本站內容除非來源注明魔據教育,否則均為網友轉載,涉及言論、版權與本站無關。

全國咨詢熱線:18501996998,值班手機:18501996998(7*24小時)

在線咨詢:張老師QQ 320169340

企業合作服務專線:010-82340234-821, 院校合作洽談專線:010-82340234

Copyright 2001-2019 魔據教育 - 北京華育興業科技有限公司 版權所有,京ICP備17018991號-2

免費在線咨詢立即咨詢

免費索取技術資料立即索取

大數據技術交流QQ:226594285

電話咨詢010-82340234

六合图库118万众图库