一个Executor对应一个JVM进程。 从Spark的角度看,Executor占用的内存分为两部分: Memory)等。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ```spark.driver.memory``` 和```spark.executor.memory``` 分别设置Spark的Driver和Executor的```ExecutorMemory```. ```spark.yarn.executor.memoryOverhead```和```spark.yarn.driver.memoryOverhead```分别设置Spark的Driver和Executor的```MemoryOverhead```. 另外,Spark会大量分配堆外内存,堆外内存默认最大可以和```ExecutorMemory```一样,可以通过javaOptions使用```MaxDirectMemorySize```配置最大值。 堆外内存最大可以和```ExecutorMemory```一样,但是堆外内存又受```MemoryOverhead```限制,所以当```MaxDirectMemorySi
所以,Spark应用占用集群内存的总大小为:
(executor个数) * (SPARK_EXECUTOR_MEMORY+ spark.yarn.executor.memoryOverhead)+(SPARK_DRIVER_MEMORY+spark.yarn.driver.memoryOverhead)