분산 컴퓨팅 및 병렬 처리

1. 강의 계획

15시간 전체 강의계획표:

일자주제이론 시간실습 시간
1일차분산 컴퓨팅 및 병렬 처리 개요2시간4시간
2일차GCP 환경 설정 및 Dataflow 기초1시간5시간
3일차PySpark 및 Dataproc 사용법2시간4시간
4일차대용량 데이터 처리 아키텍처 이해1시간5시간
5일차클러스터 운영 최적화 및 고급 기능1시간4시간

2. 분산 컴퓨팅과 병렬 처리의 개요

분산 컴퓨팅과 병렬 처리는 오늘날 고성능 데이터 처리와 대규모 작업 실행에 중요한 두 가지 모델입니다.

  • 분산 컴퓨팅은 여러 대의 독립적인 컴퓨터가 네트워크를 통해 협력하여 작업을 수행하는 방식입니다. 각 노드는 별도의 메모리와 프로세서 자원을 보유하며, 확장성과 장애 허용성이 중요한 특징입니다 GeeksforGeeks1, Computer.org2.
  • 병렬 처리는 단일 시스템 내 여러 프로세서나 코어가 동시에 작업을 수행하여 계산 속도를 극대화하는 데 중점을 둡니다.

2.1 효과적인 비유 사례

초보자들이 이해하기 쉽게 다음과 같이 비유할 수 있습니다:

  • 분산 컴퓨팅: ‘여러 주방에서 각기 다른 요리를 준비하는 팀’처럼, 각 노드(컴퓨터)가 독립적으로 맡은 작업을 수행한 후 결과를 합칩니다.
  • 병렬 처리: ‘한 주방에서 여러 요리사가 동시에 요리를 하는 상황’에 비유할 수 있으며, 하나의 큰 작업을 여러 작은 부분으로 나누어 동시에 처리함을 강조합니다.
  • MapReduce 동작 원리: 도서관 사서들이 각자 책을 주제별로 분류(Mapper 단계)한 후, 분류된 목록을 모아 최종 리스트를 작성(Reducer 단계)하는 과정에 비유할 수 있습니다 DesignGurus.io3, Slideshare4.

2.2 분산 컴퓨팅 vs. 병렬 처리 – 핵심 차이점

분산 컴퓨팅병렬 처리
구성 요소여러 컴퓨터(노드)가 네트워크로 연결되어 협력단일 시스템 내 여러 프로세서/코어
메모리 구조각 노드가 독립적인 메모리를 가짐공유 메모리 또는 분산 메모리 혼용
주요 초점확장성, 내결함성, 데이터 분산 및 장애 허용계산 속도 향상, 효율적인 하드웨어 자원 활용
통신 방식노드 간 메시지 전달(네트워크를 통한 통신)내부 버스나 공유 메모리를 통한 통신
대표 사례구글의 MapReduce, SETI@home 프로젝트다중 코어 프로세서를 이용한 이미지 처리, 과학 시뮬레이션

분산 컴퓨팅은 지리적으로 분산된 여러 서버가 협력하여 하나의 큰 작업을 처리하는 반면, 병렬 처리는 단일 시스템 내에서 동일한 작업을 나누어 동시에 실행한다는 점에서 큰 차이가 있습니다 DiffStudy5.


3. 대용량 데이터 처리 아키텍처 유형 비교

대용량 데이터를 처리할 때 선택할 수 있는 아키텍처 방식은 주로 Scale-out(수평 확장)과 Scale-up(수직 확장)으로 나뉩니다.

3.1 Scale-out 아키텍처

  • 장점:
    • 유연성 및 비용 효율성: 새로운 서버(노드)를 추가하여 용량을 확장할 수 있음.
    • 고가용성: 다수의 노드로 구성되어 하나의 노드 장애가 전체 작업에 치명적이지 않음.
  • 단점:
    • 네트워크 지연: 노드 간 통신 비용이 발생할 수 있음.
    • 관리 복잡성: 여러 대의 하드웨어를 효율적으로 관리해야 함
      PureStorage6, ServerWatch7.

3.2 Scale-up 아키텍처

  • 장점:
    • 낮은 지연 시간: 단일 서버 내에서 작업이 이루어져 통신 지연이 적음.
    • 간단한 관리: 단일 시스템만 관리하면 됨.
  • 단점:
    • 확장 한계: 하드웨어 성능 업그레이드에 비용과 시간이 많이 소요됨.
    • 업그레이드 비용: 고성능 컴포넌트로 교체 시 비용 부담이 큼
      PureStorage6, ServerWatch7.

4. GCP에서 Python 기반 분산 컴퓨팅 서비스

GCP는 다양한 분산 컴퓨팅 서비스를 제공하며, Python SDK를 지원하는 주요 제품은 다음과 같습니다:

  1. Cloud Dataflow:
    Apache Beam SDK 기반의 Python API를 제공하여 대규모 배치 및 스트리밍 데이터 파이프라인을 구축할 수 있습니다 SDK version support status8.
  2. Cloud Dataproc:
    Apache Spark와 Hadoop 작업에 필요한 Python API를 제공하며, 클러스터 관리, 작업 제출 및 스케일링 제어 기능을 지원합니다 SDK version support status8.
  3. Vertex AI:
    머신러닝 모델의 분산 훈련과 예측 작업을 위한 Python SDK를 제공하며, 대규모 ML 파이프라인 구축에 활용됩니다.
    • 예를 들어, CustomTrainingJob 객체를 생성하고, job.run()을 통해 작업을 제출하는 방식으로 사용됩니다 Vertex AI 문서9.

추가적으로, Cloud Pub/Sub와 같이 메시징을 통한 데이터 스트리밍 서비스도 Python Client Libraries를 제공하지만, 분산 작업 제출 측면에서는 위 3가지 제품이 주로 사용됩니다 SDK version support status8.

4.1 최신 GCP 기능

  • C3 가상 머신 특성[1]
  • HTTP3 프로토콜의 효과[2]

AI 기반 자원 스케줄러는 분리된 파트로 설명합니다.

  • 효과:
    AI 기반 자원 스케줄러를 적용하면, Dask 작업 처리 시간이 부하 유형에 따라 최대 40% 단축되는 효과가 보고됩니다 Experience Google Cloud Next 2510.

5. 실습 예제: Python 코드 예시

5.1 Apache Beam 기반 Cloud Dataflow 배치 작업 예제

아래 코드는 Apache Beam을 이용해 Cloud Dataflow 작업을 제출하는 간단한 예제입니다.

from apache_beam import Pipeline
from apache_beam.io import ReadFromText, WriteToText

with Pipeline() as p:
    (p
     | 'Read' >> ReadFromText('gs://path/to/input')
     | 'Write' >> WriteToText('gs://path/to/output/'))

이 코드는 DataflowRunner를 사용하여 배치 파이프라인을 실행하는 기본 예시이며, 입력 데이터를 읽어 처리 후 저장합니다 SDK version support status8.

5.2 PySpark를 이용한 Cloud Storage 데이터 처리 예제

PySpark를 활용하여 Parquet 파일을 처리하는 예시는 다음과 같습니다. 이때 API 키 설정 단계를 포함해야 합니다.

5단계 스크린샷 가이드

  1. GCP Console에 접속합니다.
  2. API 및 서비스 > 라이브러리로 이동합니다.
  3. Google Cloud Storage JSON API를 활성화합니다.
  4. 사용자 인증으로 이동하여 API 키를 생성합니다.
  5. 생성된 API 키를 복사합니다.
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('ParquetApp').getOrCreate()
df = spark.read.parquet('gs://my-bucket/my-data.parquet')
df.show()      # 데이터 출력
df.write.parquet('gs://my-bucket/output-data.parquet')  # 결과 저장

위 코드는 Cloud Storage에 저장된 Parquet 파일을 읽고, 처리 후 결과를 다시 저장하는 과정을 보여줍니다 Python Cloud Client Libraries11.


6. 대용량 데이터 처리 워크플로우 사례

대용량 데이터 처리 환경(10TB 이상)에서 각 기술의 실제 워크플로우는 다음과 같이 구성할 수 있습니다.

6.1 Dask 기반 워크플로우

  • 설정:
    GCP Kubernetes Engine에 Dask Kubernetes Operator 및 Helm 차트를 설치하여 Dask Scheduler와 여러 워커를 배포합니다.
  • 작업 처리:
    데이터 파티셔닝, 캐싱, 분산 연산 등의 기법을 통해 대용량 데이터를 처리하며, Dask 대시보드를 통해 상태를 모니터링합니다.
    Dask Kubernetes Operator — Dask Kubernetes 2025.1.1 documentation12.

6.2 PySpark 기반 워크플로우

  • 설정:
    GCP Dataproc 클러스터를 생성하고 Cloud Storage에 저장된 데이터를 Spark SQL 및 DataFrame API를 사용해 불러옵니다.
  • 작업 처리:
    데이터를 필요한 변환 작업(예: 집계, 조인)을 실행한 후, 결과를 다시 Cloud Storage에 저장합니다.
    Navigating the Future of Distributed Systems13.

6.3 Ray 기반 워크플로우

  • 설정:
    Vertex AI 환경 또는 GKE에 Ray 클러스터를 구성합니다. 자동 확장 기능과 Stackdriver(Cloud Monitoring) 연동을 통해 클러스터를 효율적으로 관리합니다.
  • 작업 처리:
    대규모 분산 머신러닝 파이프라인 구축에 초점을 맞추며, 작업자 노드 수를 필요에 따라 자동으로 조정하여 10TB 이상의 데이터를 처리합니다.
    Ray on Vertex AI 개요14.

7. 클러스터 운영: 자동 확장 및 모니터링

대규모 데이터 처리 환경에서는 효율적인 클러스터 운영과 자원 관리를 위해 자동 확장(autoscaling) 및 모니터링 설정이 필수적입니다.

7.1 자동 확장 설정

  • Managed Instance Group (MIG) 활용:
    GCP의 MIG를 사용하여 Ray 클러스터 또는 기타 워커 노드에 대한 자동 확장 구성을 설정할 수 있습니다.
    • 클러스터 구성 파일에 최소(min_replica_count)와 최대(max_replica_count) 노드 수를 지정합니다.
    • 건강 상태(Health Check) 기준을 설정하여 노드 장애 시 자동 복구(autohealing)가 작동하도록 구성합니다 Scale Ray clusters on Vertex AI15.
  • Stackdriver/Cloud Monitoring 연동:
    각 클러스터 노드에 Cloud Monitoring 에이전트를 설치하여 CPU, 메모리, 네트워크 트래픽 등의 메트릭을 수집합니다.
    이러한 메트릭을 기반으로 자동 확장 조건을 정의하면 워커 노드에서 OutOfMemory와 같은 오류 발생 시 추가 노드가 자동으로 생성됩니다.
    예를 들어, “container/memory/usage” 메트릭을 80% 이상 유지하도록 설정하여 자동 확장을 트리거할 수 있습니다 Scale based on Monitoring metrics16.

7.2 클러스터 모니터링 및 Stackdriver 연동 예

  • Ray 클러스터 모니터링을 위해 각 노드의 로그와 메트릭을 Stackdriver 대시보드에서 확인할 수 있으며, 이를 통해 클러스터의 가용성 및 성능을 실시간으로 추적합니다.
  • 추가적인 자동 복구 기능은 Managed Instance Group의 autohealing 기능을 활성화하여 설정합니다.

8. 결론

이 강의 노트는 분산 컴퓨팅과 병렬 처리에 대한 이론적 배경, 각 기술의 핵심 차이점 및 효과적인 비유, 그리고 GCP 환경에서 Python 중심의 분산 컴퓨팅 서비스(Cloud Dataflow, Cloud Dataproc, Vertex AI) 사용 방법과 실습 예제를 포괄적으로 다룹니다. 또한, 10TB 이상의 대용량 데이터 처리 워크플로우 구성 및 클러스터 자동 확장, 모니터링, 그리고 최신 GCP 기능(C3 VM, HTTP3, AI 자원 스케줄러)과의 연동 사례를 포함하여, 실제 업무 환경에서의 적용 가능성과 최적화 전략을 제시합니다.
이와 같이 이론과 실습을 병행한 교육 과정을 통해 초보자들도 대규모 분산 작업 처리 및 병렬 처리 기술을 이해하고 직접 구현할 수 있는 능력을 갖출 수 있을 것입니다.


주석:

참고 문헌:
GeeksforGeeks1, Computer.org2, DiffStudy5, PureStorage6, ServerWatch7, DesignGurus.io3, Slideshare4, SDK version support status8, Vertex AI 문서9, Experience Google Cloud Next 2510, General-purpose machine family for Compute Engine17, Ray on Vertex AI 개요14


핵심 요점

  • 15시간 강의 노트는 5일간 진행되며, 이론:실습 비율이 3:7로 구성되어 있습니다.
  • 초보자를 위해 분산 컴퓨팅은 ‘여러 주방에서 개별 요리를 준비하는 팀’에, 병렬 처리는 ‘한 주방에서 여러 요리사가 동시에 작업하는 상황’으로 비유하여 설명합니다.
  • 강의는 Python 중심의 실습 예제와 함께 Cloud DataflowCloud DataprocVertex AI 등 GCP 서비스 사용법을 포함합니다.
  • 최신 GCP 기능인 C3 VM과 HTTP3, 그리고 AI 기반 자원 스케줄러 도입 사례를 통해 성능 및 효율성을 강조합니다.
  • 대용량 데이터 처리 워크플로우는 Apache BeamPySparkDaskRay 기반 실습 예제로 실무 대응 방법을 제시합니다.
  • 클러스터 운영 최적화를 위해 Managed Instance Group과 Stackdriver/Cloud Monitoring 연동을 통한 자동 확장 및 모니터링 설정을 다룹니다.

HTTP3 프로토콜 도입 시, PySpark의 Shuffle 작업 성능이 25% 개선되고 평균 지연 시간도 크게 줄어듭니다 Experience Google Cloud Next 2510↩︎

C3 VM은 최대 200 Gbps의 네트워크 대역폭을 지원하며, N2 머신 대비 약 30% 향상된 네트워크 처리량을 보입니다 Experience Google Cloud Next 2510, General-purpose machine family for Compute Engine17↩︎


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *