2016-12-16 53 views
2

在google dataproc上,我想知道如何確定spark設置?就我而言,我運行一個3節點N1-標準4集羣和自動生成的火花defaults.conf看起來是這樣的:在dataproc上引發默認設置,特別是spark.yarn.am.memory

# User-supplied properties. 
    #Fri Dec 16 12:01:47 UTC 2016 
    spark.yarn.am.memoryOverhead=558 
    spark.executor.memory=5586m 
    spark.executor.cores=2 
    spark.driver.memory=3840m 
    spark.yarn.executor.memoryOverhead=558 
    spark.driver.maxResultSize=1920m 
    spark.yarn.am.memory=5586m 

爲什麼配置設置這種方式,我很納悶,爲什麼特別火花.yarn.am.memory設置爲高?按照我的理解,該設置僅在客戶端模式下生效,驅動程序在提交機器(主設備)上運行。此外,AM只負責爲工作進程請求資源並協調這些進程。爲什麼am.memory應該那麼高?在我的場景中,這種默認設置實際上意味着我只能在客戶端模式下啓動一個Spark過程,因爲第二個AM中沒有集羣中任何位置可用的RAM。 (這實際上是我觀察到的,爲什麼我首先查看了配置)。

因此,我的問題是:dataproc啓動腳本如何決定如何設置這些值,它背後的理由是什麼,以及爲什麼am.memory應該特別高?

回答

2

默認情況下,Dataproc爲Spark AppMasters和執行程序提供給每個NodeManager一半的內存(不管節點的大小)。

爲什麼AppMaster是一個很好的問題。唯一真正的答案是在小型虛擬機上支持YARN集羣模式。 Dataproc也針對單租戶短暫集羣進行了優化,所以如果沒有其他小容器打包,縮小AppMaster也無濟於事。

Dataproc團隊正致力於改進默認配置(未來的圖像版本)。如果您有任何建議,歡迎您訪問[email protected]