파이프라인 오류 조사와 성능 최적화
빌드가 실패하거나 느려지면 실제 계산, 대기열, 입력 데이터와 실행 환경을 나누어 조사해야 합니다. 마지막 정상 실행과 비교하여 어느 구간이 바뀌었는지 확인한 뒤 코드 또는 자원 구성을 조정합니다.
Spark로 실행하는 배치 파이프라인은 실행 계획, 파티션과 연산 프로필을 조정하여 성능을 개선할 수 있습니다. 그러나 입력 전체가 계속 커지는 상황에서는 같은 배치를 튜닝하는 것만으로 한계가 있습니다. 변경된 행과 파일만 처리하는 증분 파이프라인으로 처리 방식을 바꾸는 판단도 필요합니다.
Faster와 외부 연산 파이프라인은 Spark와 실행 엔진이 다르므로 엔진별 지원 기능 및 실행 결과를 구분합니다. 작성 및 실행 방식에 맞는 지표를 사용합니다.
증상에 따른 조사 경로
| 증상 | 조사 방법 |
|---|---|
| 개별 실행 작업 실패 | 이전 성공 실행의 입력, 코드와 Spark 모듈 버전을 비교합니다. 취소 전에 드라이버 로그를 보존합니다. |
| 파이프라인 장애 | 영향을 완화하고 상위 입력, 플랫폼 또는 담당 범위의 변경으로 분류합니다. 관련 팀과 소비자에게 필요한 정보를 전달합니다. |
| 스트림 실패 | 즉시, 일시적 및 반복 실패를 구분하고 클러스터 로그와 입력 변경을 확인합니다. |
| 메모리 부족 의심 | 실제 메모리 소진 여부와 드라이버 및 실행기 구간을 확인하고 데이터량, 조인과 계획 크기를 줄입니다. |
| 스케줄 미실행 또는 생략 | 실패, Ignored와 미발동을 구분하고 트리거, 최신 상태, 범위와 권한을 확인합니다. |
운영 기대치와 장애 기록은 유지보수 절차에 남깁니다. 일시적인 복구와 근본 원인 수정을 구분하고, 같은 문제가 다시 발생했을 때 사용할 근거와 조치 내역을 보존합니다.
Spark 실행과 파일 구성
Spark 실행 구조에서 드라이버와 실행기의 자원, 동시성과 프로필 조정 기준을 확인합니다. Spark details와 Spark UI로 실행 구간을 조사하고, 할당 자원과 실행 시간을 함께 계산하여 연산 사용량을 비교할 수 있습니다.
데이터셋 프로젝션은 반복되는 필터와 조인에 맞춰 별도 조회용 데이터를 유지합니다. Hive 방식으로 원본 파일을 나누는 경우와 비교하여 소비 엔진, 갱신 지연, 파일 수와 보존 정책을 선택합니다.
Spark 최적화는 coalesce와 repartition, 버킷과 Hive 파일 배치, 조인 전략을 비교합니다. 필요한 변경은 프로필로 적용하고 관리형 프로필이나 Velox 가속의 실행 조건을 확인합니다.