我看到一個常見的設置來使用pyspark --master yarn --deploy-mode client --num-executors 4 --executor-memory 2g --driver-memory 4g
開始pyspark,但如何駕駛員記憶從執行性記憶有什麼不同?您能否解釋一下驅動程序是什麼以及如何在此設置影響pyspark工作流程/性能?什麼是pyspark驅動程序?
謝謝!
我看到一個常見的設置來使用pyspark --master yarn --deploy-mode client --num-executors 4 --executor-memory 2g --driver-memory 4g
開始pyspark,但如何駕駛員記憶從執行性記憶有什麼不同?您能否解釋一下驅動程序是什麼以及如何在此設置影響pyspark工作流程/性能?什麼是pyspark驅動程序?
謝謝!
A Spark Driver
是運行應用程序的main()
函數並創建SparkContext
的過程。
--driver-memory
設置通過此驅動程序所使用的內存。如果以客戶端模式運行應用程序,這很可能是主節點使用的最大內存量。主節點僅用於協調執行者之間的作業,所以他並不真正用於計算。 驅動程序中的內存可以填充調用的操作的Action
像collect返回一個包含所有在這個RDD的元素的列表。如果RDD大於驅動程序內存,則Spark應用程序將通過OutOfMemory
錯誤。
在這裏您可以找到有關Spark組件的更多信息:http://spark.apache.org/docs/latest/cluster-overview.html#components
這是描述了用於調整火花應用程序的各種參數的精彩環節。 它包括driver memory
,executor memory
描述等 http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-1/ http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/
火花應用程序由單個驅動器過程和一組分散在節點集羣上執行程序的過程中的。
的驅動程序是負責對工作的高層次的控制流需要完成的過程。執行者進程負責以任務的形式執行這項工作,並負責存儲用戶選擇緩存的任何數據。驅動程序和執行程序通常都會在應用程序運行的整個過程中保持運行狀態,但動態資源分配會改變後者的狀態。一個執行者有許多用於運行任務的插槽,並且在其整個生命週期中將同時運行多個插槽。在集羣上部署這些流程是高達使用Cluster Manager(YARN,Mesos,或Spark獨立),但司機和實施者自己在每星火應用存在。
火花使用主/從結構。正如您在圖中看到的那樣,它有一箇中央協調員(司機)與許多分佈式工作人員(執行者)進行通信。驅動程序和每個執行程序都在自己的Java進程中運行。
DRIVER
駕駛員是主方法運行的過程。首先將用戶程序轉換爲任務,然後在執行程序上調度任務。
執行人
執行人的工作節點負責在給定的星火工作運行單個任務的過程。它們在Spark應用程序的開始處啓動,並且通常在應用程序的整個生命週期中運行。一旦他們完成任務,他們會將結果發送給驅動程序。它們還爲RDD提供內存中存儲,這些RDD由用戶程序通過Block Manager緩存。