Spark 장점 feat DAG 기반 연산 최적화

Holyday33·2024년 11월 27일
  1. 대규모 데이터 처리 가능: 메모리+디스크 최적화로 Python보다 큰 데이터를 안정적으로 처리할 수 있음.
    • 파이썬은 메모리 초과 오류 발생
  2. 분산 처리 및 확장성: 여러 노드에서 병렬 처리 가능하며, 클러스터 확장으로 성능을 선형적으로 향상.
  3. 반복 작업 최적화: RDD 캐싱으로 동일 데이터를 재사용하며, 중복 작업 없이 빠르게 처리.
  4. I/O 병목 완화: HDFS, S3 등에서 병렬 파일 읽기를 지원해 대용량 데이터 처리 속도가 빠름.
  5. 지연 실행 최적화: DAG 기반 연산 최적화로 필요한 작업만 수행하여 성능을 높임.

Lazy Evaluation(지연 실행)과 DAG 최적화: 간단한 설명

Spark의 지연 실행(Lazy Evaluation)은 변환 연산(map, filter 등)을 호출하더라도 즉시 실행되지 않고, "어떤 작업을 수행해야 하는지에 대한 계획"만 저장합니다. 이 계획은 DAG(Directed Acyclic Graph) 형태로 표현되며, 최종 연산(collect, saveAsTextFile 등)이 호출될 때 실행됩니다.


Python과 Spark 비교 예시

Python: 즉시 실행

data = [1, 2, 3, 4, 5]
result = [x ** 2 for x in data if x > 2]
print(result)
  • Python은 데이터를 읽고 연산(filter, map)을 즉시 수행합니다.

Spark: 지연 실행

rdd = sc.parallelize([1, 2, 3, 4, 5])
rdd2 = rdd.filter(lambda x: x > 2)  # 실행되지 않음
rdd3 = rdd2.map(lambda x: x ** 2)  # 실행되지 않음
result = rdd3.collect()  # 이때 모든 작업 실행
  • Spark는 filtermap을 하나의 계획으로 저장하다가, collect() 호출 시 필터링 후 제곱 계산을 한 번에 처리합니다.

DAG 최적화의 장점

  • 중복 작업 제거: 여러 연산을 합쳐 불필요한 작업을 줄임.
  • 데이터 이동 최소화: 클러스터 간 데이터 전송을 줄여 성능 향상.

요약:
지연 실행과 DAG 최적화 덕분에 Spark는 데이터를 효율적으로 처리하며, 반복 작업이나 대규모 데이터 처리에서 성능을 극대화합니다.

profile
Why so serious?

0개의 댓글