Apache Spark 기반 워크로드를 Amazon EMR에서 운영할 때, 버전 업그레이드는 어려운 작업 중 하나입니다. 특히 Spark 2.x → 3.x 업그레이드는 API 변경, 동작 변화, 빌드 및 테스트 환경 조정 등 다양한 검토 사항이 있습니다. AWS는 이러한 과정을 자동화하고 검증까지 지원하는 Apache Spark Upgrade Agent를 발표했습니다. 이 문서에서는 EMR에서 Spark Upgrade Agent를 실제로 설정하고 사용하는 방법을 안내합니다.
![[AWS] Amazon EMR Spark 업그레이드](https://blog.kakaocdn.net/dna/bWLogD/dJMcacPgs9Y/AAAAAAAAAAAAAAAAAAAAANBeTTIQeL5_xT340zqbN0FB8LdzBePY2E1y_S-_XZbb/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1780239599&allow_ip=&allow_referer=&signature=EW%2BcNNGpqf1ahdfBIJywawuTGaY%3D)
Apache Spark Upgrade Agent란?
Apache Spark Upgrade Agent는 Amazon EMR on EC2와 EMR Serverless 환경에서 Spark 버전 업그레이드를 자동화하는 도구입니다. 기본적으로 Spark 업그레이드는 API 변경 내용 파악, 의존성 충돌 해결, 동작 변화 대응 및 데이터 품질 검증 등 여러 복잡한 단계가 필요합니다. 이 에이전트는 다음 기능을 제공합니다.
- 코드 분석을 통한 API 변경 식별 및 수정 제안
- 자연어 기반 입력을 통한 업그레이드 프롬프트 지원
- PySpark와 Scala 코드 자동 변경 및 검증
- 데이터 처리 정확도를 유지하는 검증 기능 포함
- 사용자가 변경 승인 여부를 주도하는 Human-in-the-Loop 모델
현재 에이전트는 Spark 2.4 → 3.5 업그레이드를 지원합니다.
사전 요구 사항
Upgrade Agent를 사용하기 전에 아래 도구 설치와 환경 구성이 필요합니다:
- AWS CLI 설치 및 인증
- 로컬 환경에서 AWS CLI를 설치하고, aws configure 또는 환경 변수로 인증 설정
- Python 3.10 이상
- 에이전트 프록시 및 도구 실행 환경
- uv 패키지 매니저 설치
- MCP Proxy for AWS 설치에 사용
- Kiro CLI 또는 MCP 호환 클라이언트
- 업그레이드 명령과 상호작용을 위한 CLI 또는 IDE 통합
- IAM 권한 구성
- MCP 서버 호출 권한과 EMR 구현 리소스 권한 부여
1. IAM 역할 및 리소스 구성
먼저 업그레이드 작업에 사용할 IAM 역할과 작업용 S3 스테이징 버킷을 설정합니다. 다음 리소스를 준비합니다.
| 리소스 | 설명 |
| SparkUpgradeIAMRole | MCP Server와 EMR 권한이 있는 IAM 역할 |
| StagingBucket | 업그레이드 아티팩트 업로드용 S3 버킷 |
| (선택) KMS Key | S3 버킷 및 CloudWatch 로그 암호화 |
이 역할은 MCP 호출 권한, EMR 작업 생성 권한, S3 객체 접근 권한 등을 갖도록 정책을 구성해야 합니다.
CloudFormation 템플릿 예시는 AWS 공식 문서에서 제공합니다.
2. MCP Proxy for AWS 설정
Spark Upgrade Agent는 **Model Context Protocol (MCP)**을 통해 IDE/CLI와 SageMaker Unified Studio Managed MCP Server 간 통신합니다. 이를 위해 로컬 환경에 MCP 프록시를 설치해야 합니다.
# uv 설치
pip install uv
# MCP Proxy for AWS 설치 (예시)
uvx mcp-proxy-for-aws@latest <SigV4 MCP endpoint URL>
프록시 설치 후 로컬 AWS 인증 정보가 MCP 프록시를 통해 안전하게 인증되도록 합니다.
3. Spark Upgrade Agent 실행 절차
Upgrade Agent 사용은 크게 아래 흐름으로 진행합니다.
3.1 업그레이드 계획 수립
프로젝트 루트 디렉토리에서 MCP 호환 CLI나 IDE를 통해 Upgrade Agent를 호출합니다. 자연어 명령 또는 프롬프트로 업그레이드 의도를 전달합니다.
예시:
Upgrade Spark application from 2.4 to 3.5
에이전트는 프로젝트 구조 분석 → 필요한 변경 사항 목록 작성 → 업그레이드 계획 생성을 진행합니다.
3.2 빌드 환경 업데이트
에이전트는 종속성 및 빌드 설정을 검토하고, Spark 3.5에 맞는 빌드 환경으로 수정합니다. 빌드 실패가 있을 경우 반복적으로 수정이 진행됩니다.
3.3 코드 수정 및 검증
Upgrade Agent는 다음 작업을 수행합니다:
- API 변경 대응 코드 수정 (예: DataFrame API 변경)
- 컴파일 및 빌드 오류 해결
- 유닛/통합 테스트 실행
- EMR 클러스터에서 실제 작업 제출 및 데이터 품질 검증
검증 결과는 IDE/CLI에 표시되며, 승인 후 실제 코드에 반영됩니다.
3.4 관찰 및 상태 확인
에이전트는 EMR 관찰 도구를 통해 업그레이드 진행 상태를 추적합니다. 필요 시 logs, status 정보를 실시간으로 확인하면서 조정할 수 있습니다.
4. 업그레이드 적용 이후
업그레이드가 완료되면 아래 점검 작업을 권장합니다:
- 통합 테스트 리그레션 확인
- EMR 작업 성능 비교
- Spark SQL 및 DataFrame 동작 검증
- 버전별 모니터링 설정 업데이트
참고 사항
- 현재 지원하는 버전은 Spark 2.4 → 3.5입니다. 그 외 업그레이드 경로는 아직 미지원입니다.
- Private artifact dependencies는 자동으로 변경되지 않으며 수동 대응이 필요합니다.
- 업그레이드 계획과 실제 변경 반영은 사용자 승인 기반(Human-in-the-Loop) 입니다. 자동 전환이 아니라 검증 중심입니다.
마무리
Apache Spark Upgrade Agent는 기존에 수개월이 걸리던 Spark 버전 업그레이드 과정을 수주 내로 단축시키는 자동화 도구입니다. 코드 분석, 빌드 테스트, 데이터 품질 검증 등 반복적이고 위험한 작업을 자동화하지만, 최종 변경 제어는 엔지니어가 보유하도록 설계되어 있습니다.
'AWS' 카테고리의 다른 글
| [AWS] AWS Glue Data Quality Pre-processing Query 구성 방법 (0) | 2025.12.29 |
|---|---|
| [AWS] Quick Research 서드파티 데이터 통합 구성 방법 (0) | 2025.12.28 |
| [AWS] Amazon S3 Tables 자동 복제(Replication) 설정 방법 (0) | 2025.12.27 |
| [AWS] Glue Zero-ETL 기반 Self-Managed Database 구성 방법 (0) | 2025.12.27 |
| [AWS] AWS Backup으로 Amazon EKS 클러스터 백업하기 (0) | 2025.12.27 |