2. Spark 구성요소&아키텍처

JJong·2025년 1월 10일

Data Science

목록 보기
4/5
post-thumbnail

<Spark을 왜 사용해야하는지 정도는 알았으니 어떤 메커니즘으로 이루어지는지 정리해보는 고런 느낌 😁>

2.1 Spark Architecture

Image 출처 : https://datastrophic.io/core-concepts-architecture-and-internals-of-apache-spark/

크게는 Driver, Cluster Manager, Executors 로 구성되어 있음.

Image 출처 : https://www.learntospark.com/2020/02/spark-architecture.html#google_vignette

그림만 봐서는 그냥 모르겠으니 우선 Step Flow만 보며 요~런 흐름이구나 해야겠다. ㅎ

Step 1. Spark Submit을 Driver한테 던져주면서 "요것점 해라~" 명령
Step 2. "하~ 이거 파일 좀 크네? 한번에 하기엔 쪼오금 빡세니까 DAG Scheduler랑 Task Scheduler가 나누게 시켜야지" 하면서 계획을 세움
Step 3. 이제 이 작업을 돌릴 리소스가 필요함. → Cluster Manager한테 ㄱㄱ → "작업 좀 하게 컴퓨터좀 쓰자" (리소스 협상)
Step 4. Cluster Manager : "ㅇㅋ 쓸 수 있는거 줌" → Executors(실행기)한테 작업 명령함
Step 5. Executors랑 Driver 연결
Step 6. 위에 작업들을 모니터링 하면서 관리

2.2 Spark 사용시 주의할 점

1. Driver의 Single Point of Failure

  • Driver는 장애가 발생해도 자동으로 복구 안됨 ㅠ
  • Driver가 중단될 경우 전체 작업이 멈추므로, Driver를 모니터링하고 장애 발생 시 대처 방안 마련해야함

2. Executor 수와 리소스 관리

  • Executor를 늘리면 작업 속도가 빨라질 수 있긴한데, 너무 많이 사용하면 오히려 시스템 부하가 늘어나고 작업이 늘어질 수 있음
  • 데이터 크기에 맞게 Executor 수를 적절히 설정해야함

3. Idempotent 작업 설계

  • Driver나 Executor가 중단되거나 다시 시작도리 경우에도 작업이 문제없이 반복 실행될 수 있도록 설계해야함.
  • 특히 Streaming 작업에서는 데이터 처리를 안정적으로 유지할 방법을 고려해야함.
profile
please bbbbbbbbb 😂

0개의 댓글