[英]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 的總量:
這些數字是spark.driver.memory
和spark.yarn.driver.memoryOverhead
的總和。 開銷應占總數的 10-15%。
您還可以按照此Cloudera 鏈接調整 Spark 作業
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.