Spark๋ฅผ Kubernetes ์์ ์ฌ๋ฆฌ๋ฉด ๋ฌด์์ด ๋ฌ๋ผ์ง๋๊ฐ Spark๋ฅผ ์ ๊ตณ์ด Kubernetes ์์ ์ฌ๋ฆฌ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์๊ฐ ์ด์ ๋ฐฉ์์ด ์ด๋ป๊ฒ ๋ฐ๋๋์ง๋ฅผ ์ค๋ฌด ๊ด์ ์์ ์ ๋ฆฌํ๋ค.
๋ค์ด๊ฐ๋ฉฐ
Spark on Kubernetes ์ด์ผ๊ธฐ๋ฅผ ํ๋ฉด ๋๊ฐ ์ค์น๋ฒ์ด๋ ์ฑ๋ฅ ํ๋๋ถํฐ ๋ ์ฌ๋ฆฌ๊ธฐ ์ฝ๋ค.
ํ์ง๋ง ํ์
์์ ๋ ์ค์ํ ์ง๋ฌธ์ ๋ฐ๋ก ์๋ค.
์ ๊ตณ์ด Spark๋ฅผ Kubernetes ์์ ์ฌ๋ฆฌ๋๊ฐ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์๊ฐ ์ด์ ๋ฐฉ์์ด ์ด๋ป๊ฒ ๋ฐ๋๋๊ฐ๋ค.
์ด ์ง๋ฌธ์ ๋ตํ๋ ค๋ฉด ๋จผ์ Spark์ Kubernetes๋ฅผ ์์ฃผ ์งง๊ฒ๋ผ๋ ๋ค์ ์ ๋ฆฌํด์ผ ํ๋ค.
๋จผ์ Spark๊ฐ ๋ฌด์์ธ๊ฐ
Apache Spark ๊ณต์ ๋ฌธ์๋ Spark๋ฅผ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ํตํฉ ๋ถ์ ์์ง์ผ๋ก ์ ์ํ๋ค.
๊ทธ๋ฆฌ๊ณ Spark SQL, Structured Streaming, MLlib, GraphX์ฒ๋ผ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋๊ตฌ๋ฅผ ํ๋์ ์ํ๊ณ ์์์ ์ ๊ณตํ๋ค๊ณ ์ค๋ช
ํ๋ค. ์ค๋ฌด์ ์ผ๋ก ํ์ด ๋งํ๋ฉด Spark๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ํ๊ฒฝ์์ ์ฝ๊ณ , ๊ฐ๊ณตํ๊ณ , ์ง๊ณํ๊ณ , ํ์ต์ํค๋ ์ผ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์์ง์ด๋ค.
์ฆ Spark๋ ๋จ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ธฐ๋ณด๋ค, ๋ฐ์ดํฐ ์์ง๋์ด๋ง๊ณผ ๋ถ์ ํ์ดํ๋ผ์ธ์ ์คํํ๋ ์คํ ์์ง์ ๊ฐ๊น๋ค.
๋ฐฐ์น ์ฒ๋ฆฌ, ์คํธ๋ฆฌ๋ฐ, ๋จธ์ ๋ฌ๋ ์ ์ฒ๋ฆฌ๊น์ง ํ ํ๋ซํผ ์์์ ๋ค๋ฃฐ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ํ๋ซํผ์ ์ค์ฌ์ถ์ผ๋ก ์์ฃผ ๋ฑ์ฅํ๋ค.
Kubernetes๋ ๋ ๋ฌด์์ธ๊ฐ
Kubernetes ๊ณต์ ๋ฌธ์๋ Kubernetes๋ฅผ ์ปจํ ์ด๋ํ๋ ์ํฌ๋ก๋์ ์๋น์ค๋ฅผ ๊ด๋ฆฌํ๋ ์ด์ ๊ฐ๋ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์คํ์์ค ํ๋ซํผ์ด๋ผ๊ณ ์ค๋ช ํ๋ค. ๊ฐ์ ๋ฌธ์์์ Kubernetes๋ ์ ์ธํ ๊ตฌ์ฑ๊ณผ ์๋ํ๋ฅผ ์ง์ํ๊ณ , ์ค์ผ์ค๋ง, ์๊ฐ๋ณต๊ตฌ, ํ์ฅ, ์ํฌ๋ฆฟ๊ณผ ์ค์ ๊ด๋ฆฌ, ๋ฐฐ์น ์คํ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๊ณ ์ ๋ฆฌํ๋ค.
๊ฐ๋ฐ์ ๊ฐ๊ฐ์ผ๋ก ๋ค์ ๋งํ๋ฉด Kubernetes๋ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๋จ์ ์คํ๊ธฐ๊ฐ ์๋๋ผ, ์ปจํ ์ด๋ ์ํฌ๋ก๋๋ฅผ ์ด์ํ๋ ํ์ค ์ด์ ์ฒด๊ณ์ ๊ฐ๊น๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋์ ๋ฐฐ์นํ ์ง, ์ฅ์ ๊ฐ ๋๋ฉด ์ด๋ป๊ฒ ๋ค์ ๋์ธ์ง, ๋ฆฌ์์ค๋ฅผ ์ด๋ป๊ฒ ๋๋์ง, ๋น๋ฐ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์ฃผ์ ํ ์ง ๊ฐ์ ๋ฌธ์ ๋ฅผ ํ๋ซํผ ์ฐจ์์์ ํด๊ฒฐํ๋ค.
๊ทธ๋ผ ์ Spark๋ฅผ Kubernetes์ ์ฌ๋ฆฌ๋ ค ํ๋๊ฐ
์ฌ๊ธฐ์ ์์ฐ์ค๋ฝ๊ฒ ์ง๋ฌธ์ด ์๊ธด๋ค.
Spark๋ ์๋๋ ์ ๋์๊ฐ๋๋ฐ ์ ๊ตณ์ด Kubernetes๋ฅผ ๋ถ์ด๋ ค ํ ๊น.
Spark ๊ณต์ ๋ฌธ์๋ Spark๊ฐ standalone, YARN, Kubernetes ๊ฐ์ ์ฌ๋ฌ ๋ฐฐํฌ ๋ฐฉ์์ ์ง์ํ๋ค๊ณ ์ค๋ช
ํ๋ค.
๊ทธ๋ฆฌ๊ณ Spark on Kubernetes ๋ฌธ์๋ Spark๊ฐ Kubernetes ํด๋ฌ์คํฐ ์์์ ์คํ๋๋ฉฐ,
Kubernetes์ ๋ค์ดํฐ๋ธ ์ค์ผ์ค๋ฌ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๋ฐํ๋ค.
์ด ๋ง์ ๊ณง Spark๋ฅผ ๋ ์ด์ ๋ณ๋ ์ฌ์ฒ๋ผ ์ด์ํ์ง ์๊ณ , ์กฐ์ง์ด ์ด๋ฏธ ์ฐ๊ณ ์๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๋ซํผ ์์ ํ๋์ ์ํฌ๋ก๋๋ก ๋ค๋ฃจ๊ฒ ๋ค๋ ๋ป์ด๋ค. ๋ฐฐ์น ์ก, API ์๋ฒ, ๋ด๋ถ ์ด๋๋ฏผ ํด, ์์ปค, ์คํ์ฉ ํ๊ฒฝ์ด ๋ชจ๋ Kubernetes ์์ ์๋ค๋ฉด Spark ์ญ์ ๊ฐ์ ๊ท์น ์์ผ๋ก ํธ์ ํ๋ ํธ์ด ์ด์์ ์์ฐ์ค๋ฝ๋ค.
์๋ ๊ทธ๋ฆผ์ ์ด ๊ด๊ณ๋ฅผ ํ ์ฅ์ผ๋ก ์ ๋ฆฌํ ๊ฒ์ด๋ค.

๊ทธ๋ฆผ์ฒ๋ผ ํต์ฌ์ ๋จ์ํ๋ค. Spark๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ง์ด๊ณ , Kubernetes๋ ์ปจํ
์ด๋ ์ํฌ๋ก๋ ์ด์ ํ๋ซํผ์ด๋ค.
์ด ๋์ด ๋ง๋๋ฉด Spark ์ ํ๋ฆฌ์ผ์ด์
์ Kubernetes ์์์ driver pod์ executor pod ํํ๋ก ์คํ๋๊ณ , ์ค์ผ์ค๋ง๊ณผ ๋ณต๊ตฌ, ๋ฆฌ์์ค ๋ฐฐ์น, ์ด์ ํ์คํ๋ Kubernetes์ ์ฑ
์ ์๋๋ก ๋ค์ด๊ฐ๋ค.
์์ฃผ ๊ฐ๋จํ ์์ ๋ก ๋ณด๋ฉด
๋ง๋ก๋ง ์ค๋ช
ํ๋ฉด ์ถ์์ ์ผ๋ก ๋ค๋ฆด ์ ์๋ค.
๊ฐ์ฅ ๋จ์ํ ํํ๋ก ๋ณด๋ฉด ๋ก์ปฌ์์ ๋๋ฆฌ๋ PySpark ์ฝ๋ ์์ฒด๋ ํฌ๊ฒ ๋ฌ๋ผ์ง์ง ์๋๋ค.
๋ฌ๋ผ์ง๋ ๊ฒ์ ์ฝ๋๋ณด๋ค ์ด๋์ ์ด๋ป๊ฒ ์ ์ถํ๋๋๋ค.
์๋ ์์๋ ์ซ์ ๋ฒ์๋ฅผ ๋ง๋ ๋ค ์ง์ ๊ฐ์๋ฅผ ์ธ๋ ์์ฃผ ์งง์ PySpark ์ฝ๋๋ค.
from pyspark.sql import SparkSession
spark = (
SparkSession.builder
.appName("spark-on-k8s-demo")
.getOrCreate()
)
numbers = spark.range(1, 1000001)
even_count = numbers.filter("id % 2 = 0").count()
print(f"even_count={even_count}")
spark.stop()
์ด ์ฝ๋๋ฅผ Kubernetes ์์ ์ ์ถํ ๋๋ Spark ๊ณต์ ๋ฌธ์๊ฐ ์ค๋ช
ํ๋ ๋ฐฉ์๋๋ก spark-submit์์ master๋ฅผ Kubernetes API ์๋ฒ๋ก ์ง์ ํ๊ณ , ์คํ์ ์ฌ์ฉํ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ namespace ๊ฐ์ ๊ฐ์ ํจ๊ป ๋๊ธด๋ค. ์์ฃผ ์ถ์ฝํ๋ฉด ์๋์ฒ๋ผ ์ดํดํ๋ฉด ๋๋ค.
./bin/spark-submit \
--master k8s://https://kubernetes.default.svc:443 \
--deploy-mode cluster \
--name spark-on-k8s-demo \
--class org.apache.spark.examples.SparkPi \
--conf spark.executor.instances=2 \
--conf spark.kubernetes.container.image=myrepo/spark:4.1.1 \
--conf spark.kubernetes.namespace=data-platform \
local:///opt/spark/examples/jars/spark-examples_2.13-4.1.1.jar
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ ์ฝ๋ ๋ณธ๋ฌธ์ด ์๋๋ผ ์คํ ๋ชจ๋ธ์ด๋ค. ๊ฐ๋ฐ์๋ Spark ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ถํ๊ณ , Kubernetes๋ driver pod์ executor pod๋ฅผ ๋ฐฐ์นํ๋ค. ๊ทธ๋์ Spark on Kubernetes๋ฅผ ์ดํดํ ๋๋ ์์ค ์ฝ๋๋ณด๋ค ์ ์ถ ์ค์ , ์ด๋ฏธ์ง, namespace, ๊ถํ, ๋ฆฌ์์ค ์ค์ ์ ๊ฐ์ด ๋ด์ผ ํ๋ค.
๊ฐ์ฅ ํฌ๊ฒ ๋ฌ๋ผ์ง๋ ์ง์ 1: ์คํ ๋จ์๊ฐ ํด๋ฌ์คํฐ ๊ด๋ฆฌ์์์ Pod ์ค์ฌ์ผ๋ก ๋ฐ๋๋ค
Spark on Kubernetes ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด spark-submit์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ถํ๋ฉด ๋๋ผ์ด๋ฒ๊ฐ Kubernetes Pod๋ก ๋จ๊ณ , ๊ทธ ๋๋ผ์ด๋ฒ๊ฐ executor Pod๋ค์ ์์ฑํด ์์
์ ์ํํ๋ค.
์ฆ ๊ฐ๋ฐ์๊ฐ ๋ณด๋ Spark ์ฝ๋๋ ๋น์ทํ ์ ์์ง๋ง, ์ด์์๊ฐ ๋ณด๋ ์คํ ๋จ์๋ ์์ ํ ๋ฌ๋ผ์ง๋ค.
| ๊ตฌ๋ถ | Spark ์ ์ฉ ์ด์ ๊ฐ๊ฐ | Kubernetes ์ Spark ์ด์ ๊ฐ๊ฐ |
| ์คํ ๋จ์ | ์ ํ๋ฆฌ์ผ์ด์ , executor | driver pod, executor pod |
| ๋ฐฐ์น ๊ธฐ์ค | Spark ํด๋ฌ์คํฐ ๊ธฐ์ค | namespace, pod, quota, node ๊ธฐ์ค |
| ์ฅ์ ํ์ธ | Spark UI์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ ์ค์ฌ | Spark UI + pod ์ํ + ์ด๋ฒคํธ + ํด๋ฌ์คํฐ ๋ก๊ทธ |
| ๊ถํ ์ค๊ณ | Spark ์ค์ ์ค์ฌ | service account, RBAC, secret ์ค์ฌ |
์ด ๋ณํ๋ ์๊ฐ๋ณด๋ค ํฌ๋ค. ์ด์ ์๋ Spark ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ค executor ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋จน๋์ง๊ฐ ์ฃผ ๊ด์ฌ์ฌ์๋ค๋ฉด, Kubernetes ์์์๋ ์ด Pod๊ฐ ์ด๋ namespace์ ์ํ๋์ง, ์ด๋ค ๋ฆฌ์์ค quota ์์์ ๋์๊ฐ๋์ง, ์ด๋ ๋ ธ๋์ ๋ฐฐ์น๋๋์ง๊น์ง ํจ๊ป ๋ด์ผ ํ๋ค. ๋ค์ ๋งํด Spark ์ด์์ด ํ๋ซํผ ์ด์ ๋ฌธ๋ฒ ์์ผ๋ก ๋ค์ด์จ๋ค.
๊ฐ์ฅ ํฌ๊ฒ ๋ฌ๋ผ์ง๋ ์ง์ 2: ์ ์ด์ํ๋๊ฐ์ ์ด์ ๊ฐ ๋ฌ๋ผ์ง๋ค
Spark๋ฅผ Kubernetes ์์ ์ฌ๋ฆฌ๋ ์ด์ ๋ ๋จ์ง ์ต์ ๊ธฐ์ ์ ์ฐ๊ณ ์ถ์ด์๊ฐ ์๋๋ค. ์ค์ ์ด์ ๋ ๊ฝค ํ์ค์ ์ด๋ค.
์ฒซ์งธ, ํ๋ซํผ ํตํฉ์ด ๊ฐ๋ฅํด์ง๋ค.
์ด๋ฏธ ์กฐ์ง ์์ ์๋น์ค๋ค์ด Kubernetes ์์์ ๋์๊ฐ๋ค๋ฉด Spark๋ง ๋ณ๋ ์ด์ ์ฒด๊ณ๋ก ๊ฐ์ ธ๊ฐ ์ด์ ๊ฐ ์ค์ด๋ ๋ค.
๋์งธ, ๋ฉํฐํ
๋์์ ๋ฆฌ์์ค ๊ฒฉ๋ฆฌ๋ฅผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
Kubernetes๋ quota, namespace, scheduling ๊ฐ์ ๋ฉ์ปค๋์ฆ์ ํตํด ์๋ก ๋ค๋ฅธ ํ๊ณผ ์ํฌ๋ก๋๋ฅผ ํ ํด๋ฌ์คํฐ ์์์ ๋ค๋ฃฐ ์ ์๋ค.
์
์งธ, ๋ณด์·๊ด์ธก·๋ฐฐํฌ ํ์คํ๊ฐ ์ฌ์์ง๋ค.
์ํฌ๋ฆฟ ์ฃผ์
, ์ค์ ๊ด๋ฆฌ, ๋ก๊ทธ ์์ง, ์ด๋ฏธ์ง ๋ฐฐํฌ ๊ฐ์ ์ ์ฐจ๋ฅผ Spark๋ง ๋ฐ๋ก ๋ง๋ค์ง ์์๋ ๋๋ค.
์ด ์ง์ ์ด ์ค์ํ ์ด์ ๋ ๋ฐ์ดํฐ ํ๋ซํผ์ด ์ ์ ๋ ๋ ๋ฆฝ์ ์ธ ํน์ ์์คํ ์ด ์๋๋ผ, ์กฐ์ง ์ ์ฒด ์์ง๋์ด๋ง ํ๋ซํผ์ ์ผ๋ถ๊ฐ ๋๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค. Spark on Kubernetes๋ ๋ฐ๋ก ์ด ๋ณํ์ ๋ง๋ฟ์ ์๋ค.
๊ฐ์ฅ ํฌ๊ฒ ๋ฌ๋ผ์ง๋ ์ง์ 3: ๋ณด์๊ณผ ๊ถํ์ ๋ ์ธ๋ฐํด์ง์ง๋ง ๋ ๋ณต์กํด์ง๋ค
๋ง์ ํ์ด Kubernetes ์์ ์ฌ๋ฆฌ๋ฉด ์๋์ผ๋ก ๋ณด์์ด ์ข์์ง ๊ฒ์ด๋ผ ๊ธฐ๋ํ๋ค.
ํ์ง๋ง Spark on Kubernetes ๋ฌธ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋ณด์ ๊ธฐ๋ฅ์ด ์๋ ํ์ฑํ๋๋ ๊ฒ์ ์๋๋ฉฐ, Pod Security Admission, ๋ณผ๋ฅจ ์ฌ์ฉ, ์ฌ์ฉ์ ID, RBAC, Secret ์ฒ๋ฆฌ ๊ฐ์ ํญ๋ชฉ์ ๋ฐ๋ก ๋ค๋ค์ผ ํ๋ค๊ณ ์ค๋ช
ํ๋ค.
์ด ๋ง์ ๊ณง ๋ณด์์ด ์ข์์ง ์๋ ์์ง๋ง, ์ ์ ๋ก ์ข์์ง์ง๋ ์๋๋ค๋ ๋ป์ด๋ค.
์๋ฅผ ๋ค์ด ๋๋ผ์ด๋ฒ Pod๊ฐ ๋ค๋ฅธ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค ์ ์์ด์ผ ํ๋ค๋ฉด ์๋น์ค ๊ณ์ ๊ถํ์ ์ค๊ณํด์ผ ํ๊ณ , ์ธ๋ถ ์ ์ฅ์ ๋น๋ฐํค๋ฅผ ์จ์ผ ํ๋ค๋ฉด Secret์ ์ด๋ป๊ฒ ๋ง์ดํธํ ์ง ๊ฒฐ์ ํด์ผ ํ๋ค.
Spark๋ง ์๋ ์์ ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ์ด์ ๊ฒฐ์ ์ด ํ์ํด์ง๋ค.
๊ฐ์ฅ ํฌ๊ฒ ๋ฌ๋ผ์ง๋ ์ง์ 4: ๋๋ฒ๊น ๊ด์ ์ด ๋์ด์ง๋ค
Spark๋ง ์ด์ํ ๋๋ ์คํจ ์์ธ์ Spark ์ค์ , ์
ํ, ๋ฉ๋ชจ๋ฆฌ, ์ฝ๋ ๋ก์ง์์ ๋จผ์ ์ฐพ๋๋ค.
Kubernetes ์์์๋ ์ฌ๊ธฐ์ Pod ์ค์ผ์ค๋ง ์คํจ, ์ด๋ฏธ์ง pull ์คํจ, ๊ถํ ๋๋ฝ, ๋ณผ๋ฅจ ๋ง์ดํธ ์คํจ, ํด๋ฌ์คํฐ ๋ฆฌ์์ค ๋ถ์กฑ์ด ํจ๊ป ๋ค์ด์จ๋ค. ๊ทธ๋์ ๋ฌธ์ ๋ฅผ ๋ณผ ๋๋ ์ ํ๋ฆฌ์ผ์ด์
๋ฌธ์ + ํ๋ซํผ ๋ฌธ์ ๋ฅผ ๊ฐ์ด ๋ด์ผ ํ๋ค.
์ค์ ๋ก Spark on Kubernetes ๋ฌธ์๊ฐ ๋ก๊ทธ ์ ๊ทผ, Driver UI ์ ๊ทผ, ๋๋ฒ๊น
๊ณผ ์ธํธ๋ก์คํ์
์ ๋ณ๋ ํญ๋ชฉ์ผ๋ก ๋ค๋ฃจ๋ ์ด์ ๋ ์ฌ๊ธฐ์ ์๋ค.
๊ฐ์ executor ์คํจ๋ผ๋ ์์ธ์ด Spark ์ฝ๋๊ฐ ์๋๋ผ Pod ์์ฑ ์คํจ์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ์ฐจ์ด ๋๋ฌธ์ Spark on Kubernetes๋ ์์ง ํ๋๋ฅผ ์๋ ๊ฒ๋ง์ผ๋ก๋ ๋ถ์กฑํ๊ณ , Kubernetes ์ด์ ๊ฐ๊ฐ๊น์ง ๊ฐ์ด ์๊ตฌํ๋ค.
๊ทธ๋ผ ์ธ์ ์ด ์ ํ์ด ๋ง๋๊ฐ
Spark๋ฅผ Kubernetes ์์ ์ฌ๋ฆฌ๋ ์ ํ์ด ํนํ ์ ๋ง๋ ๊ฒฝ์ฐ๋ ๋น๊ต์ ๋ถ๋ช
ํ๋ค.
์กฐ์ง์ ํ์ค ์ด์ ํ๋ซํผ์ด ์ด๋ฏธ Kubernetes์ด๊ณ , ์ฌ๋ฌ ์ํฌ๋ก๋๊ฐ ๊ฐ์ ๊ด์ธก·๋ฐฐํฌ·๋ณด์ ์ฒด๊ณ๋ฅผ ์ฐ๊ณ ์์ผ๋ฉฐ,
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ํฌ๋ก๋๋ ๊ทธ ํ๋ฆ ์์ผ๋ก ๋ฃ๊ณ ์ถ์ ๋๋ค. ์ด ๊ฒฝ์ฐ Spark๋ ๋ณ๋ ์ด์ ์ฌ์ผ๋ก๊ฐ ์๋๋ผ ํ๋ซํผ์ ์ผ๋ถ๊ฐ ๋๋ค.
๋ฐ๋๋ก ์์ง Kubernetes ์ด์ ์ญ๋์ด ์ฝํ๊ฑฐ๋, ๋ฐ์ดํฐ ํ๋ซํผ ์ ์ฉ ํด๋ฌ์คํฐ๊ฐ ์ด๋ฏธ ์ถฉ๋ถํ ์์ ์ ์ด๊ณ , ํ์ด Spark ์ธ ๋ ์ด์ด๊น์ง ๊ฐ๋นํ๊ธฐ ์ด๋ ต๋ค๋ฉด ๊ผญ ์ฎ๊ฒจ์ผ ํ ์ด์ ๋ ์ฝํ๋ค. ๊ธฐ์ ์ ์ผ๋ก ๊ฐ๋ฅํ๋ค๋ ์ฌ์ค๊ณผ ์กฐ์ง์ ์ผ๋ก ์ด๋์ด๋ผ๋ ์ฌ์ค์ ๋ค๋ฅด๋ค.
๋ง๋ฌด๋ฆฌ
Spark๋ฅผ Kubernetes ์์ ์ฌ๋ฆฌ๋ฉด ๊ฐ์ฅ ํฌ๊ฒ ๋ฌ๋ผ์ง๋ ๊ฒ์ Spark API๊ฐ ์๋๋ค. ์ด์์ ๊ด์ ์ด ๋ฐ๋๋ค. Spark๋ฅผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ง์ผ๋ก๋ง ๋ณด๋ ๊ฒ์ด ์๋๋ผ, Kubernetes ์์์ ๋์๊ฐ๋ ์ํฌ๋ก๋๋ก ๋ณด๊ฒ ๋๋ค. ๊ทธ ์๊ฐ๋ถํฐ ์คํ ๋จ์๋ Pod๊ฐ ๋๊ณ , ๋ฆฌ์์ค ์ด์์ quota์ scheduling์ด ๋๊ณ , ๋ณด์์ RBAC์ Secret ์ค๊ณ๊ฐ ๋๋ฉฐ, ์ฅ์ ๋ถ์์ ํด๋ฌ์คํฐ ๋ ๋ฒจ๊น์ง ํ์ฅ๋๋ค.
๊ฒฐ๊ตญ ์ด ์ ํ์ ์ฑ๋ฅ ๋ฌธ์ ํ๋๋ก ๊ฒฐ์ ๋์ง ์๋๋ค. ์คํ๋ ค ์กฐ์ง์ด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์์คํ ์ ์ผ๋ง๋ ํ๋ซํผ์ ์ผ๋ก ์ด์ํ๊ณ ์ถ์๊ฐ์ ๋ ๊ฐ๊น๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ง๋ฌธ์ ๋ํ ๋ต์ด ์ด๋ฏธ ๋์ ์๋ ํ์ด๋ผ๋ฉด, Spark on Kubernetes๋ ๋จ์ ์ ํ์ด ์๋๋ผ ๊ฝค ์ค๋๋ ฅ ์๋ ์ด์ ๋ชจ๋ธ์ด ๋๋ค.
์ฐธ๊ณ ์๋ฃ
- https://spark.apache.org/docs/latest/ "Overview - Spark Documentation"
- https://kubernetes.io/docs/concepts/overview/ "Overview | Kubernetes"
- https://spark.apache.org/docs/latest/running-on-kubernetes.html "Running Spark on Kubernetes - Apache Spark Documentation"
'๐ Data Science & AI > Data Engineering' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Kafka ์ ๋ฌธ (1) | 2026.06.25 |
|---|---|
| Airflow๋ก ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๋ง๋ค๊ธฐ (2) | 2026.06.24 |
| ETL, ELT ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๋ ๋ฐฉ์, ๋ญ๊ฐ ๋ค๋ฅผ๊น (0) | 2026.06.16 |
| ๋ฐ์ดํฐ ์ข ๋ฅ์ ์ดํด์ ๋ถ์ ํ๋ก์ธ์ค (0) | 2026.02.27 |
