Data Engineering/s3 minio

📘 [MinIO & Cilium 기반 오브젝트 스토리지 연동 시리즈 #17] Spark 작업 실패 시 S3 에러 로그 분석 (403/timeout 등)

ygtoken 2025. 3. 26. 20:37
728x90

목표: Spark 작업 실행 시 발생할 수 있는 **S3 에러 (403, timeout 등)**을 분석하고,
MinIO 로그를 통해 문제를 진단하는 방법을 실습합니다.


🔎 이번 글에서 수행할 작업 요약

  1. Spark 작업에서 발생하는 일반적인 S3 에러 분석 (403, timeout 등)
  2. MinIO 로그에서 에러 메시지 추적 및 원인 분석
  3. S3 에러 해결을 위한 설정 방법 및 최적화
  4. Prometheus와 Grafana를 사용하여 S3 에러 모니터링 설정

🧠 1단계: Spark 작업에서 발생하는 S3 에러

이 단계의 목적: Spark 작업 실행 중 발생할 수 있는 주요 S3 에러들을 이해하고,
이를 해결하기 위한 접근 방안을 마련합니다.

  • 403 Forbidden:
    • 자격 증명이 올바르지 않거나, 권한이 부족할 때 발생
    • AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY 오류 가능성
  • timeout:
    • 네트워크 지연이나 MinIO의 응답 속도가 느릴 때 발생
    • 클러스터 리소스 부족 또는 네트워크 설정 문제
  • connection errors:
    • MinIO 서버와의 연결 문제로 발생
    • MinIO URL 오타, 포트 미설정 등 네트워크 오류

⚙️ 2단계: MinIO 로그에서 에러 메시지 추적

이 단계의 목적: MinIO의 로그 파일을 통해 발생한 에러의 원인을 파악하고,
이를 해결하기 위한 구체적인 단서를 찾습니다.

# MinIO 로그 확인
kubectl logs minio-0 -n minio

 

예시 로그:

ERROR: Failed to make a request to the S3 API, 403 Forbidden
  • 403 Forbidden 오류 발생 시, 해당 로그를 바탕으로 자격 증명이나 정책을 재점검할 수 있습니다.
  • timeout 오류는 네트워크 설정이나 리소스 부족을 의심해볼 수 있습니다.

🔍 3단계: S3 에러 해결을 위한 설정 방법

이 단계의 목적: 발생한 에러에 맞는 해결 방법을 적용하여,
Spark와 MinIO 간의 통신을 원활하게 하고 에러를 해결합니다.

✅ 1) 403 Forbidden 에러 해결

# MinIO Access Key와 Secret Key 확인
echo $AWS_ACCESS_KEY_ID
echo $AWS_SECRET_ACCESS_KEY

# Spark에서 사용되는 자격 증명 검토
spark-submit \
  --conf spark.hadoop.fs.s3a.access.key=${AWS_ACCESS_KEY_ID} \
  --conf spark.hadoop.fs.s3a.secret.key=${AWS_SECRET_ACCESS_KEY} \
  ...

✅ 2) Timeout 에러 해결

# Spark에서의 connection 설정 확인
--conf spark.hadoop.fs.s3a.connection.timeout=5000 \      # 연결 타임아웃 (ms)
--conf spark.hadoop.fs.s3a.attempts.maximum=5 \           # 최대 재시도 횟수
--conf spark.hadoop.fs.s3a.fast.upload=true               # 빠른 업로드 모드 활성화

✅ 3) 네트워크 및 MinIO 설정 점검

  • MinIO 서버와 Spark 클러스터 간의 네트워크 연결 상태 점검
  • 포트가 열려 있는지, 접근 권한 설정이 올바른지 확인
# MinIO URL 및 포트 확인
kubectl get svc minio -n minio

📊 4단계: Prometheus와 Grafana를 사용한 S3 에러 모니터링

이 단계의 목적: Prometheus와 Grafana를 설정하여 실시간으로 S3 에러를 모니터링하고,
문제 발생 시 빠르게 대응할 수 있도록 준비합니다.

# Prometheus에서 MinIO Exporter의 metrics 수집
scrape_configs:
  - job_name: 'minio'
    static_configs:
      - targets: ['minio-exporter.minio.svc.cluster.local:9000']

# Grafana에서 MinIO 관련 대시보드 추가
  1. MinIO Exporter를 통해 Prometheus에서 MinIO 메트릭스를 수집
  2. Grafana에서 MinIO 관련 대시보드를 설정하여 에러율, 응답 시간 등을 모니터링

Prometheus 대시보드에서 HTTP 403, 408 에러와 같은 지표를 모니터링하고,
문제가 발생할 경우 Grafana를 통해 알림을 받을 수 있습니다.


📎 요약 및 핵심 정리

  • Spark 작업에서 발생하는 S3 관련 에러는 주로 403, timeout, connection errors 등이 있음
  • MinIO의 로그 파일을 통해 발생한 에러 메시지 및 원인을 분석하고,
    이를 해결하기 위한 자격 증명 확인 및 네트워크 설정 변경 필요
  • PrometheusGrafana를 통해 실시간 모니터링을 설정하여,
    S3 에러를 빠르게 감지하고 대응할 수 있는 체계를 마련함
728x90