๋ฃฉ์ ํ ์ด๋ธ๋ฑ์ Broadcastingํ์ฌ Shuffling์ ๋ง๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค.
Broadcast Join์์ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ๋์ผํ ํ ํฌ๋์ด๋ค.
๋๋ถ๋ถ ๋ฃฉ์
ํ
์ด๋ธ(ํน์ ๋๋ฉ์
ํ
์ด๋ธ - 10~20MB)์ Executor๋ก ์ ์กํ๋๋ฐ ์ฌ์ฉํ๋ค.
-> ๋ง์ DB์์ ์คํ ์คํค๋ง ํํ๋ก ํฉํธ ํ
์ด๋ธ๊ณผ ๋๋ฉ์
ํ
์ด๋ธ์ ๋ถ๋ฆฌํ๋ค.
spark.sparkContext.broadcast๋ฅผ ์ฌ์ฉํ๋ค.
์ฃผ์ด์ง ์ฐ์ฐ์ ๋ํด์ ๋ฏธ๋ฆฌ ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๋ค์ ์งํฉ(๋ฐฐ์ด)์ ๊ฐ๋ฆฌํจ๋ค.
์ด ์งํฉ(๋ฐฐ์ด)์ ์ฃผ์ด์ง ์ฐ์ฐ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๋ ์๊ฐ๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ๊ฐ์ ์ทจ๋ํด ๊ฐ ์ ์๋๋ก ์ฌ์ฉ๋๋ ๋ ํผ๋ฐ์ค๋ก ์ฌ์ฉ๋๋ค.
์ปดํจํฐ ๊ณผํ์์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด์ด๋ ์ฐ๊ด ๋ฐฐ์ด๋ก ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ LUT๋ผ ๋ถ๋ฅธ๋ค.
Closure
Broadcast
Broadcast Dataset์ ํน์ง
ํน์ ์ด๋ฒค๋์ ์๋ฅผ ๊ธฐ๋กํ๋๋ฐ ์ฌ์ฉ๋๋ค. -> ์ผ์ข
์ ์ ์ญ ๋ณ์
-> ํ๋ก์์ ์นด์ดํฐ์ ์์ฃผ ํก์ฌํ๋ค.
์๋ฅผ ๋ค๋ฉด ๋น์ ์์ ์ธ ๊ฐ์ ๊ฐ์ง๋ ๋ ์ฝ๋์ ์๋ฅผ ์นด์ดํ ํ๋๋ฐ ์ฌ์ฉ๋๋ค.
def handle_bad_zipcode(c:int) -> int:
if len(str(c)) != 5:
return None
return c
๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ ์ญ๋ณ์๋ก ๋๋ผ์ด๋ฒ์ ์์นํ๋ค.
์ค์นผ๋ผ๋ก ๋ง๋ค๋ฉด ์ด๋ฆ์ ์ค ์ ์์ง๋ง ๊ทธ์ด์ธ์๋ ๋ถ๊ฐ๋ฅํ๋ค.
-> ์ด๋ฆ์๋ Accumulators๋ง Spark Web UI์ ๋ํ๋๋ค.
๋ ์ฝ๋ ๋ณ๋ก ์ธ๊ฑฐ๋ ํฉ์ ๊ตฌํ๋๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ๊ฐ์ ์ ํ๋๋ ๋ฌ๋ผ์ง๋ค.
| ํ๊ฒฝ ๋ณ์ ์ด๋ฆ | Default | |
|---|---|---|
| spark.speculation.interval | 100ms | 1 sec |
| spark.speculation.multiplier | 1.5 | 4 |
| spark.speculation.quantile | 0.75 | 0.9 |
| spark.speculation.minTaskRuntime | 100ms | 30 sec |
| spark.speculation.task.duration.threshold | None | None |
Spark Application๋ค๊ฐ์ ๋ฆฌ์์ค ํ ๋น
ํ๋์ Spark Application์์์ Job๋ค ๊ฐ์ ๋ฆฌ์์ค ํ ๋น
Static Allocation(๊ธฐ๋ณธ ๋์)
Dynamic Allocation
spark-submit --num-executors 100 --executor-cores 4 --executor-memory 32G

ํ๋์ Spark Application๋ด์ Job๋ค์ ๋ฆฌ์์ค๋ฅผ ๋๋์ด์ฃผ๋ ์ ์ฑ
์ด๋ค.
-> Spark Application๋ค๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๋๋์ด์ฃผ๋ ๋ฐฉ์์ ๋ฆฌ์์ค ๋งค๋์ ์๊ฒ ๋ฌ๋ ค์๋ค.
๋ค์ 2๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
FIFO(๊ธฐ๋ณธ)
FAIR
๋ณ๋ ฌ์ฑ ์ฆ๋ -> Thread ํ์ฉ์ด ํ์ํ๋ค.
๊ด๋ จ ํ๊ฒฝ ๋ณ์
