簡體   English   中英

如何計算 Executor memory,No of executor,No of executor cores 和 Driver memory 使用 Spark 讀取 40GB 文件?

[英]How to calculate the Executor memory,No of executor ,No of executor cores and Driver memory to read a file of 40GB using Spark?

Yarn 集群配置: 8 個節點 每個節點 8 個內核 每個節點 8 GB RAM 每個節點 1TB 硬盤

執行者 memory & 執行者數量

執行器 memory 和沒有執行器/節點是相互關聯的,因此您首先開始選擇執行器 memory 或執行器編號,然后根據您的選擇,您可以按照此設置屬性以獲得所需的結果

在 YARN 中,這些屬性會影響可以在 NodeManager 中基於spark.executor.cores, spark.executor.memory屬性值(以及執行器 memory 開銷)實例化的容器數量(/Spark 中的執行程序)

例如,如果集群有 10 個節點(RAM:16 GB,核心:6)並設置了以下紗線屬性

yarn.scheduler.maximum-allocation-mb=10GB 
yarn.nodemanager.resource.memory-mb=10GB
yarn.scheduler.maximum-allocation-vcores=4
yarn.nodemanager.resource.cpu-vcores=4

然后使用 spark 屬性 spark.executor.cores=2, spark.executor.memory=4GB 您可以期望 2 個執行器/節點,因此總共您將獲得 19 個執行器 + 1 個驅動程序容器

如果 spark 屬性是spark.executor.cores=3, spark.executor.memory=8GB那么你將獲得 9 個執行器(只有 1 個執行器/節點)+ 1 個用於驅動程序鏈接的容器

驅動 memory

spark.driver.memory — 每個 Spark 驅動程序的最大大小 Java 堆 memory

spark.yarn.driver.memoryOverhead — 每個驅動程序可以從 YARN 請求的額外堆外 memory 的數量。 這與 spark.driver.memory 一起是總的 memory,YARN 可以使用它來為驅動程序進程創建 JVM。

Spark驅動程序 memory 不會直接影響性能,但它確保Spark作業在驅動程序處不受 memory 約束的情況下運行 假設yarn.nodemanager.resource.memory-mb的值為 X,使用以下公式調整分配給 Spark 驅動程序的 memory 的總量:

  • 當 X 大於 50 GB 時為 12 GB
  • 當 X 介於 12 GB 和 50 GB 之間時為 4 GB
  • 當 X 介於 1GB 和 12 GB 之間時為 1 GB
  • 當 X 小於 1 GB 時為 256 MB

這些數字是spark.driver.memoryspark.yarn.driver.memoryOverhead的總和。 開銷應占總數的 10-15%。

您還可以按照此Cloudera 鏈接調整 Spark 作業

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM