๋น
๋ฐ์ดํฐ ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์
์ด ๊ณ์ํด์ ์ฆ๊ฐํ๋ฉด์ ๊ธฐ์
๋ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ
์ ํจ์จ์ ์ผ๋ก ์ค๊ณํ๊ณ ์ด์ํ๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. Apache Spark๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์คํ ์์ค ํด๋ฌ์คํฐ ์ปดํจํ
ํ๋ ์์ํฌ๋ก์, ์ด๋ฌํ ์๊ตฌ๋ฅผ ์ถฉ์กฑ์ํค๋๋ฐ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Spark ํด๋ฌ์คํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ตฌ์ฑํ๊ณ ์ด์ํ๊ธฐ ์ํด์๋ ์ ์ ํ ํฌ๊ธฐ์ ๊ตฌ์ฑ์ ๊ฒฐ์ ํ๋ ๊ฒ์ด ํ์์ ์
๋๋ค.
์ด ๊ธ์์๋ Spark ํด๋ฌ์คํฐ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ํ์ํ ๊ณ ๋ ค ์ฌํญ๊ณผ ์ ๊ทผ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ฒ์๊ธ์ Ganesh Walavalkar์ Spark Cluster Sizing ๊ฒ์๊ธ์ ์ ๋ฆฌํ๋ฉฐ ์์ฑ๋ ๊ธ์
๋๋ค.
Ask
๋ฐ์ดํฐ ์ฆ๊ฐ๋๊ณผ ์๋๋ฅผ ๊ณ ๋ คํ๋ฉด์ CPU์ ๋ฉ๋ชจ๋ฆฌ ์ธํ๋ผ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ ํฉ๋๋ค.
Assumptions (or given)
1. ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์๋ ๋ฐ์ดํฐ: ์ฝ 400TB, ์ ์ฆ๊ฐ๋: ์ฝ 30TB
2. ์ผ์ผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋: ์ฝ 300TB (New: 30TB + Historical: 270TB)
3. 1TB์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์๋ ์ฝ 10๋ถ์ด ์์๋ฉ๋๋ค. ์ฌ๊ธฐ์ 10๋ถ์ ์ฃผ๊ด์ ์ธ ์ซ์์
๋๋ค. ์๋ฅผ ๋ค์ด์ ๋งค์ผ 300TB์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด 50์๊ฐ(300*10๋ถ, ๋งค์ผ ๋ฐค ๋น๋)๊ฐ ์์๋ฉ๋๋ค. 10๋์ ๋จธ์ ์ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ๋ฉด 50/10 -> ์ฝ 5์๊ฐ์ผ๋ก ๋จ์ถ๋ฉ๋๋ค. data science ๊ด๋ จ ์์
, ์ธ๋ถ ๋ฐ์ดํฐ ์์ค์ ์
์ถ๋ ฅ, ์ฃผ๋ง ์ฒ๋ฆฌ ๋ฐ ์ค๋ฅ ์ฒ๋ฆฌ/์ฌ์ฒ๋ฆฌ๋ฅผ ์ํ ์ถฉ๋ถํ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
4. ๋ฐ์ดํฐ์ ๋ค์์ฑ/์ ํ์ฑ์ ๊ณ์ฐ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
5. ๋ฐ์ดํฐ๋ ๋ก์ปฌ์ ์์ผ๋ฉฐ ์ธ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ ๋ง์ ๋
ธ๋ ฅ์ด ํ์ํ์ง ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
Response
Calculations โ I (Starting with business requirements)
1. ๋
ธ๋๋น Spark executor - 5 cores + ์ถ๊ฐ 1๊ฐ core (์์ปค ๋
ธ๋์ OS์ execution management) = ์ด 6core
2. ๋
ธ๋๋น Spark executor ๋ฉ๋ชจ๋ฆฌ - 24GB(executor 1๊ฐ๋น) * 5๊ฐ์ executor = 120GB. OS ๋ฐ execution management๋ฅผ ์ํ ์ถ๊ฐ 5GB(๋ณดํต 2GB) ๋ฅผ ์ถ๊ฐ = ์ด 125GB
3. 1TB์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์๋ โper core & 25 GBโ ์ ์กฐํฉ๋น 10๋ถ ~ 15๋ถ์ด ์์๋ฉ๋๋ค. (์ด๊ฒ์ ๋งค์ฐ ์ฃผ๊ด์ ์
๋๋ค. ์์ ๊ฐ์ 3๋ฒ์ ๋ช
์)
4. 300TB์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ 300TB * 15๋ถ = 4500๋ถ or 75์๊ฐ์ด ํ์ํฉ๋๋ค.
5. ๋งค์ผ ๋ฐค ์ฒ๋ฆฌ๋ฅผ 6์๊ฐ ~ 7์๊ฐ ์ด๋ด๋ก ์๋ฃํ๊ธฐ ์ํด์๋ 12๋์ ์๋ฒ๊ฐ ํ์ํฉ๋๋ค. ํฉ๋ฆฌ์ ์ธ ๋ฒํผ๊ฐ ์์ผ๋ฏ๋ก 12Core/24TB/256GB ๋จ์ ๊ฐ์ถ 10๋์ ์๋ฒ๋ก ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
6. ํ์ํ ๋์คํฌ ๊ณต๊ฐ
- ๊ธฐ์กด: 400TB, ์ฆ๊ฐ๋ถ: 360TB (40TB*12), ์ด ~800TB
7. ์์ 5๋ฒ๊ณผ ๊ฐ์ด ํด๋ฌ์คํฐ๊ฐ 10๋์ ์๋ฒ๋ก ์์๋๋ค๋ฉด, ์ด 800TB์ ๋์คํฌ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ธฐ ์ํด์ ๊ฐ ์๋ฒ๋น 80TB๋ฅผ ํ ๋นํ ์ ์๋ค.
Notes: (spark on yarn ์ผ๋ก ๊ตฌ์ฑ)
1. YARN์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ๋ 0.5 ๋ฐฐ์์ ์ฝ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ 1๋์ ์๋ฒ๋น ์๊ตฌ๋๋ ์ฝ์ด ์๋ 12๊ฐ ์
๋๋ค. ์ด๋ 6๊ฐ์ ์๋ ์ฝ์ด(1์ ๊ณ์ฐ ๊ฒฐ๊ณผ)์ 2๋ฅผ ๊ณฑํ ๊ฐ ์
๋๋ค. YARN์ด ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ๋ ์ฌ์ฉํ๋ ์ฝ์ด ๋จ์ ์
๋๋ค. ํ ์๋ฒ์ 10๊ฐ์ ์ฝ์ด๊ฐ ์์ง๋ง YARN์์๋ 6๊ฐ์ ์ฝ์ด๋ก ์ธ์ํ๊ณ ๋ฆฌ์์ค๋ฅผ ํ ๋นํฉ๋๋ค.
2. YARN์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ๋ 0.5๋ฐฐ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. 1๋์ ์๋ฒ๋น ์๊ตฌ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ 256GB ์
๋๋ค. 125GB์ ๋ฉ๋ชจ๋ฆฌ(2์ ๊ณ์ฐ ๊ฒฐ๊ณผ)์ 2 ๋ฅผ ๊ณฑํ ๊ฐ์
๋๋ค. YARN์ด ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ๋ ์ฌ์ฉํ๋ ์ฝ์ด ๋จ์ ์
๋๋ค.
์๋ฒ๋ฅผ ๊ณ์ฐํ๋ ๊ฒ์ ๊ณ์ฐ์ ์์์ ์ด ์๊ธฐ ์ด๋ ต์ต๋๋ค. ์๋ฅผ ๋ค์ด 300TB์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด 20๋์์ ์์ํด์ผํ ๊น์? 30๋์์ ์์ํด์ผ ํ ๊น์? ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ๋ฌ ๋ฒ์ ๋ฐ๋ณต ๊ณ์ฐ์ ํ์๋ก ํฉ๋๋ค.
Calculationsโ II (Starting with nodes)
1. node์ ์ 10
2. node๋น ์ฝ์ด ์ - 12
- Spark application์ฉ ์ฝ์ด ์ 6(0.5 YARN multiplier)
- spark management + OS ์ฉ ์ฝ์ด์ - 5
3. node ๋น ๋ฉ๋ชจ๋ฆฌ - 256GB
- spark application์ฉ ๋ฉ๋ชจ๋ฆฌ(0.5 YARN multiplier) - 128GB
- spark management + OS์ฉ - 8GB
- ์ฝ์ด๋น ๋จ์ ๋ฉ๋ชจ๋ฆฌ (120/5) 24GB
4. ํด๋ฌ์คํฐ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ด ์ฝ์ด ์ - 50(5*10)*0.9 = 45 (0.1์ ํจ์จ ์์ค์ ๊ณ ๋ คํจ)
5. ํด๋ฌ์คํฐ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ด ๋ฉ๋ชจ๋ฆฌ ์ - 1.2TB (120GB * 10) * 0.9 = 1.08TB (0.1์ ํจ์จ ์์ค์ ๊ณ ๋ คํจ)
์ฝ์ด๋น 1TB์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์ 15๋ถ์ด๋ผ๊ณ ๊ฐ์ ํ๋ค๋ฉด, ์ด ํด๋ฌ์คํฐ๋ ์๊ฐ๋น ๋
ธ๋๋น 4TB ์ฆ ์๊ฐ๋น ์ ์ฒด ํด๋ฌ์คํฐ์์ 40TB๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. 300TB๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ์๋ ์ฝ 8์๊ฐ์ด ์์๋ ์ ์์ต๋๋ค.
Putting it together
1. 12Core/Storage 24tb/memory 256GB ๊ตฌ์ฑ์ 10๋์ ์๋ฒ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
2. ์ ์ฅ๊ณต๊ฐ์ผ๋ก๋ ๋ณ๋์ ๋์คํฌ ์คํ ๋ฆฌ์ง ์๋ฒ๋ฅผ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
ํด๋ฌ์คํฐ ๋ชจ๋๋ ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค.
Outro
์ด ๊ฒ์๊ธ์์๋ ์คํํฌ ํด๋ฌ์คํฐ์ ์ธํ๋ผ ์ฌ์ด์ฆ๋ฅผ ๊ณ์ฐํ๊ธฐ์ํ ์์ฐจ์ ์ธ ๊ณผ์ ์ ๋ํด์ ์์๋ณด์์ต๋๋ค. ๋จ์ ์๋ฒ๋น ํ์ํ ์์์ ์๋ฅผ ๊ณ์ฐํ๋ ๊ณผ์ ์ ์์๋ณผ ์ ์์์ต๋๋ค. ํน์ ๋ฐ์ดํฐ ๋จ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก๊ณ ๊ธฐ์ค ์๊ฐ์ ๊ตฌํ ํ์ ์ ์ฒด ํ์ํ ์ฌ์์ ๊ณ์ฐํ๋ ๋ฐฉ์์ผ๋ก ์ ์ฒด ์ฌ์์ ๊ณ์ฐํด๋ณผ ์ ์์์ต๋๋ค.
'note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2๋ ๋์ Kubernetes์์ Airflow๋ฅผ ์คํํ๊ณ ๋ฐฐ์ด ๊ฒ (๋ฒ์ญ) (0) | 2024.02.29 |
---|---|
[hadoop] yarn demon ์คํ์ java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/s (0) | 2024.02.12 |
[test] ์ฝ๊ฒ ์์ํ๋ ํ์ด์ฌ ํ ์คํธ ์ฝ๋ (0) | 2024.01.30 |
๋คํธ์ํน์ ํตํด ๋ฐฐ์ด ๊ฒ๋ค (0) | 2023.12.31 |
airflow ์ฌ์ฉ๊ธฐ (0) | 2023.12.05 |