
spark.driver.memory = 4GB
spark.driver.cores = 4
spark.driver.memoryOverhead = 0.1
# max : spark.driver.memory์ 10% -> 384MB

spark.executor.memory = 8GB
spark.executor.cores = 4
spark.executor.memoryOverhead = 0.1
# max : spark.executor.memory์ 10% -> 384MB
yarn.nodemanager.resource.memory-mb

User-defined data structure
Spark internal metadata
UDF
RDD conversion operation
RDD lineage and dependency
RDD์ ๊ด๋ จ๋ ์์ ์ ์ง์ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
์ด ๋ถ๋ถ์ด ์ ๋ค๋ฉด spark.memory.fraction์ ์ฆ๊ฐ์ํค๋ฉด ๋๋ค.

spark.executor.memory = 8GB
spark.executor.cores = 4
spark.memory.storageFraction = 0.5

spark.executor.memory = 8GB
spark.executor.cores = 4


Static Memory Management
์ง๊ธ์ Unified Memory Manager๋ฅผ ์ฌ์ฉํ๋ค.
Executor ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๊ธฐ ์์ํ๋ฉด ์๊ธฐ๋ ์ผ
๋ฐ๋๋ก Storage๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด ์๊ธฐ๋ ์ผ
๋ ์ด์ ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ค๋ฉด?
| ์ด๋ฆ | Default | Explain |
|---|---|---|
| spark.driver.memory | 1G | |
| spark.driver.cores | 1 | |
| spark.executor.memoryOverhead | executorMemory * spark.executor.memoryOverheadFactor์ 384์ค ๋ ํฐ ๊ฐ(MB) | Non-JVM ์์ ์ ๋ถ์ฌ๋๋ ๋ฉ๋ชจ๋ฆฌ |
| spark.executor.memory | 1G | JVM์ ๋ถ์ฌ๋๋ ๋ฉ๋ชจ๋ฆฌ |
| spark.memory.fraction | 0.6 | Spark ๋ฉ๋ชจ๋ฆฌ : JVM์ ๋ถ์ฌ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ค ๋ฐ์ดํฐํ๋ ์ ๊ด๋ จ ๋ฉ๋ชจ๋ฆฌ ๋น์จ(์บ์ค ํฌํจ) |
| spark.memory.storageFraction | 0.5 | Spark ๋ฉ๋ชจ๋ฆฌ ์ค ์บ์ฑ์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ๋น์จ |
| spark.executor.cores | 1(YARN) | ๋ณดํต executor๋น 1~5๊ฐ์ CPU๋ฅผ ํ ๋นํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค. |
| spark.memory.offHeap.enabled | Fasle | Non-JVM ์์ ์ ๋ถ์ฌ๋๋ ๋ณ๋ ๋ฉ๋ชจ๋ฆฌ ํ์ฑํ ์ฌ๋ถ |
| spark.memory.offHeap.size | 0 | offHeap์ ๋ถ์ฌ๋๋ ๋ฉ๋ชจ๋ฆฌ |
| spark.executor.pyspark.memory | ์์ | Python ํ๋ก์ธ์ค์ ์ง์ ๋๋ ๋ฉ๋ชจ๋ฆฌ, ์ง์ ๋์ง ์์ผ๋ฉด Non-JVM๋ฉ๋ชจ๋ฆฌ(์ค๋ฒํค๋ ๋ฉ๋ชจ๋ฆฌ)๋ฅผ ์ฌ์ฉํ๋ค. ์ง์ ๋๋ค๋ฉด ์ด ๊ฐ๋ง์ ์ฌ์ฉํ๋ค. |
| spark.python.worker.memory | 512 | Py4J์ ์ง์ ๋๋ ๋ฉ๋ชจ๋ฆฌ(MB) |
Spark 3.x๋ Off Heap Memory ์์
์ ์ต์ ํ ๋์ด์๋ค.
-> JVM ์์ด ์ง์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ค.
Spark 3.x๋ Off Heap ๋ฉ๋ชจ๋ฆฌ๋ฅผ DataFrame์ฉ์ผ๋ก ์ฌ์ฉํ๋ค.
-> GC์ ๋ฐ์์ ์ค์ผ ์ ์๋ค.
์ฆ Off Heap ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ ์๋์ ๊ฐ๋ค.