Apache Spark 리소스 최적화: 하루 800만 건의 작업 실행에서 얻은 교훈

2 hours ago 8

Salesforce Data 360은 하루 약 800만 건의 Spark 실행에서 할당량과 실제 작업량을 비교해 낭비를 찾음. 실행 성공만으로는 리소스 구성이 효율적인지 판단할 수 없음 공통 제출 관문인 DPC에 Spark 계측 플러그인을 주입해 애플리케이션 코드 변경 없이 실행 데이터를 수집하고, Kafka를 거쳐 중앙 Iceberg 레이크하우스로 전송함 완료된 실행과 일관된 분석 범위를 기준으로 비교해야 하며, 재시도 중복 집계나 메모리/디스크 스필의 단순 합산은 잘못된 리소스 권고를 만들 수 있음 작업을 하나도 처리하지 않은 실행기와 CPU 유휴 시간을 구분해 조사하고, 초기 실행기 수 축소와 최대 실행기 수 제한 조정을 각각 한 달 넘게 운영 환경에서 검증함 대상 워크로드의 변경 전후 각 4주 구간에서 주간 컴퓨팅 비용 환산치가 31% 감소함. 다만 통제 실험이 아닌 전후 비교여서 같은 기간의 다른 변화도 영향을 줬을 수 있음 실행 성공과 리소스 효율은 별개임 Salesforce Data 360은 하루 약 800만 건의 Apache Spark 워크로드 실행을 처리하며, 짧은 작업부터 수 시간 동안 테라바이트 데이터를 처리하는 작업까지 포함함 성공한 실행은 해당 설정이 동작했다는 증거일 뿐, 할당 용량이 실제로 얼마나 필요했는지는 알려주지 않음 근거 없이 CPU, 메모리, 실행기 수를 줄이면 실행 지연, 비용이 큰 재시도, 운영 장애로 이어질 수 있음 사용하지 않는 용량을 메모리 압박이나 셔플 병목과 구분하면서 성능과 신뢰성을 유지해야 함 한 워크로드는 시작 시 실행기 40개를 요청했지만 대부분이 초기에 유용한 작업을 하지 않아 불필요한 용량 할당과 파드/노드 생성 및 제거를 유발함 고정 리소스 프로필이나 테넌트와 데이터량 기반 추정은 제출 전 할당량을 정하는 데 도움이 되지만, 실행 중 실제 사용 양상은 보여주지 못함 요청한 리소스와 실제 작업량을 비교한 실행 이력을 다음 할당 결정에 반영하고, 리소스 크기 조정이 해결해야 할 문제인지부터 확인해야 함 공통 제출 관문에서 안전하게 계측하기 Data Processing Controller(DPC) 는 Data 360의 수집, 세분화, 활성화를 지원하는 관리형 Spark 제출의 공통 관문임 Agentforce 상호작용도 플랫폼에 데이터를 유입함 애플리케이션별 계측 작업 없이 동일한 기준으로 실행기별 태스크 배정, CPU/메모리 사용량, 스필, 재시도를 관측할 ...

Read Entire Article