![](/img/trans.png)
[英]What are workers, executors, cores in Spark Standalone cluster?
[英]Increase the Spark workers cores
我已經在 master 和 2 個 worker 上安裝了 Spark。 每個工人的原始核心數是 8。當我啟動主時,工人正常工作沒有任何問題,但問題是在 Spark GUI 中,每個工人只分配了 2 個核心。
請問,我怎樣才能增加每個工人使用 8 個核心工作的核心數量?
控制每個執行程序內核的設置是spark.executor.cores
。 見文檔。 它可以通過spark-submit
cmd 參數或在spark-defaults.conf
。 該文件通常位於/etc/spark/conf
(ymmv)。 您可以使用find / -type f -name spark-defaults.conf
搜索 conf 文件
spark.executor.cores 8
但是,該設置並不能保證每個 executor 將始終獲得所有可用的內核。 這取決於您的工作量。
如果您在數據幀或 rdd 上安排任務,spark 將為數據幀的每個分區運行一個並行任務。 一個任務將被調度到一個執行器(單獨的 jvm),執行器可以在每個內核上的 jvm 線程中並行運行多個任務。
此外,執行者不一定會在單獨的工作人員上運行。 如果內存足夠,2個executor可以共享一個worker節點。
為了使用所有核心,您的案例中的設置可能如下所示:
假設您在每個節點上有 10 gig 的內存
spark.default.parallelism 14
spark.executor.instances 2
spark.executor.cores 7
spark.executor.memory 9g
將內存設置為 9g 將確保每個 executor 被分配到一個單獨的節點。 每個執行器將有 7 個可用內核。 每個數據幀操作將被調度到 14 個並發任務,這些任務將被分配給每個執行器 x 7。 您還可以重新分區數據幀,而不是設置default.parallelism
。 一個核心和 1gig 的內存留給操作系統。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.