확장된 Apache Spark 기록 서버를 사용하여 Apache Spark 애플리케이션 디버그 및 진단

이 문서에서는 확장된 Apache Spark 기록 서버를 사용하여 완료되고 실행되는 Apache Spark 애플리케이션을 디버그하고 진단하는 방법에 대한 지침을 제공합니다.

Apache Spark 기록 서버에 액세스

Apache Spark 기록 서버는 Spark 애플리케이션을 완료하고 실행하기 위한 웹 사용자 인터페이스입니다. 진행률 표시기 Notebook 또는 Apache Spark 애플리케이션 세부 정보 페이지에서 Apache Spark UI(웹 사용자 인터페이스)를 열 수 있습니다.

진행률 표시기 Notebook에서 Spark 웹 UI 열기

Apache Spark 작업이 트리거되면 Spark 웹 UI 를 여는 단추가 진행률 표시기에서 추가 작업 옵션 내에 있습니다. Spark 웹 UI를 선택하고 몇 초 동안 기다린 다음 Spark UI 페이지가 나타납니다.

진행률 표시기 Notebook에서 Spark 웹 UI 열기를 보여 주는 스크린샷

Apache Spark 애플리케이션 세부 정보 페이지에서 Spark 웹 UI 열기

Apache Spark 애플리케이션 세부 정보 페이지를 통해 Spark 웹 UI를 열 수도 있습니다. 페이지 왼쪽에서 모니터 선택한 다음 Apache Spark 애플리케이션을 선택합니다. 애플리케이션의 세부 정보 페이지가 나타납니다.

Apache Spark 애플리케이션 세부 정보 페이지에서 Spark 웹 UI 열기를 보여 주는 스크린샷

상태가 실행 중인 Apache Spark 애플리케이션의 경우 단추에 Spark UI가 표시됩니다. Spark UI를 선택하면 Spark UI 페이지가 나타납니다.

실행 중인 상태에서 Spark UI를 표시하는 단추를 보여 주는 스크린샷

상태가 종료된 Apache Spark 애플리케이션의 경우 종료 된 상태는 중지, 실패, 취소 또는 완료될 수 있습니다. 단추에 Spark 기록 서버가 표시됩니다. Spark 기록 서버를 선택하면 Spark UI 페이지가 나타납니다.

종료된 상태의 Spark UI를 표시하는 단추를 보여 주는 스크린샷

대규모 이벤트 로그를 위한 스냅샷 기반 로딩

Spark 기록 서버에 대한 새로운 스냅샷 기반 로드 방법이 도입되어 대규모 이벤트 로그 시나리오에 최적화되었습니다.

이 향상된 기능을 통해 Spark UI는 전체 재생이 완료되는 것을 기다리는 대신 사용 가능한 데이터를 점진적으로 표시합니다. 이벤트 로그 크기가 6GB이상인 경우 추가 로드 시간(일반적으로 몇 분)이 필요할 수 있음을 나타내는 로드 메시지가 표시됩니다.

부분 스냅샷을 사용할 수 있게 되면 UI는 해당 데이터를 사용하여 렌더링됩니다. 위쪽의 메시지 표시줄은 데이터가 백그라운드에서 여전히 처리되고 있음을 나타냅니다. 전체 재생이 완료되면 메시지 표시줄이 자동으로 제거되고 전체 보기가 표시됩니다.

이 환경을 사용하면 다음을 수행할 수 있습니다.

  • 큰 이벤트 로그(≥ 6GB)에 대한 명확한 로드 메시지를 참조하여 시스템이 응답하지 않고 적극적으로 처리 중임을 알 수 있습니다.
  • 명확하게 레이블이 지정된 미리 보기 배너를 통해 부분 스냅샷을 일찍 찾아 전체 재생을 기다리지 않고 작업 및 단계를 조사할 수 있습니다.
  • 처리가 완료되면 나중에 페이지를 새로 고쳐 전체 데이터 세트를 로드합니다.

Spark 기록 데이터가 완전히 로드되면 부분 로드 메시지 표시줄이 사라지고 전체 환경을 사용할 수 있습니다.

큰 이벤트 로그에 대한 스냅샷 기반 로드를 표시하는 단추를 보여 주는 스크린샷

Apache Spark 기록 서버 살펴보기

Apache Spark 기록 서버는 이벤트 로그에서 Spark 애플리케이션 실행 세부 정보를 재구성하는 웹 기반 UI(사용자 인터페이스)를 제공합니다. 이를 통해 사용자는 런타임 수명 주기를 초과하여 완료되거나 실행 중인 애플리케이션을 분석할 수 있습니다.

기록 서버 UI는 여러 탭으로 구성되며, 각 탭은 애플리케이션 동작, 성능 및 리소스 사용률을 이해하기 위한 다양한 관점을 제공합니다.

작업 탭

작업 탭은 Spark 애플리케이션 내의 모든 작업에 대한 개략적인 개요를 제공합니다.

이 보기를 사용하여 다음을 수행할 수 있습니다.

  • 작업 상태 모니터링(실행 중, 성공 또는 실패)
  • 작업 기간 비교
  • 실패하거나 느리게 실행되는 작업을 빠르게 식별

단계 탭

단계 탭에는 각 단계에 대한 자세한 실행 정보가 표시됩니다.

이 보기를 사용하여 다음을 수행할 수 있습니다.

  • 단계 수준 성능 분석
  • 작업 분포 검토 및 메트릭 순서 섞기
  • 왜곡된 데이터 또는 비용이 많이 드는 작업과 같은 병목 상태 식별

스테이지 탭을 보여 주는 스크린샷.

스테이지 번호 제한

성능 고려를 위해 기본적으로 그래프는 Spark 애플리케이션에 500개 미만의 단계가 있는 경우에만 사용할 수 있습니다. 단계가 너무 많으면 다음과 같은 오류로 실패합니다.

The number of stages in this application exceeds limit (500), graph page is disabled in this case.

해결 방법으로 Spark 애플리케이션을 시작하기 전에 이 Spark 구성을 적용하여 제한을 늘리세요.

spark.ui.enhancement.maxGraphStages 1000

그러나 콘텐츠가 너무 커서 브라우저에서 가져오고 렌더링할 수 없으므로 페이지 및 API의 성능이 저하될 수 있습니다.

스토리지 탭

스토리지 탭에는 캐시된 데이터에 대한 정보가 표시됩니다.

이 보기를 사용하여 다음을 수행할 수 있습니다.

  • 캐시된 데이터 세트의 메모리 및 디스크 사용량 이해
  • 캐싱이 효과적인지 확인

환경 탭

환경 탭에는 런타임 구성 및 환경 세부 정보가 나열됩니다.

이 보기를 사용하여 다음을 수행할 수 있습니다.

  • Spark 구성 설정 검사
  • 환경 변수 및 종속성 확인
  • 구성 관련 문제 해결

실행기 탭

실행기 탭은 실행기에서 리소스 사용률을 표시합니다.

이 보기를 사용하여 다음을 수행할 수 있습니다.

  • CPU 및 메모리 사용량 모니터링
  • 실행기에서 작업 분포 분석
  • 실행기 오류 또는 불균형 식별

그래프 탭

그래프 탭은 Spark 작업의 실행을 단계 간의 관계를 나타내는 DAG(방향성 순환 그래프)로 시각화합니다.

이 보기를 사용하여 다음을 수행할 수 있습니다.

  • 작업이 스테이지로 세분화되는 방식 및 해당 종속성 이해
  • 전체 작업 기간을 결정하는 중요한 경로 식별
  • 실패 또는 다시 시도된 단계 검색
  • 작업 실행을 재생하여 시간이 지남에 따라 태스크가 어떻게 진행되는지 관찰

이 탭은 실행 흐름을 이해하고 높은 수준의 성능 병목 상태를 식별하는 데 특히 유용합니다.

그래프를 보여 주는 스크린샷

진단 탭

진단 탭은 다음을 비롯한 고급 분석 기능을 제공합니다.

  • 데이터 스큐 감지
  • 시간 편차 분석
  • 실행기 사용 현황 분석

탭을 각각 선택하여 데이터 기울이기, 시간 기울이기실행기 사용 현황 분석을 확인합니다.

sparkUI 진단 데이터 기울이기 탭을 다시 보여 주는 스크린샷

이 탭은 작업 실행의 성능 병목 상태 및 비효율성을 식별하는 데 도움이 됩니다.

데이터 스큐

데이터 기울이기 탭을 선택하면 지정된 매개 변수에 따라 해당 왜곡된 작업이 표시됩니다.

  • 매개 변수 지정 - 첫 번째 섹션에는 데이터 기울이기를 검색하는 데 사용되는 매개 변수가 표시됩니다. 기본 규칙은 읽은 작업 데이터가 평균 작업 데이터의 3배보다 크고 읽은 작업 데이터가 10MB를 초과합니다. 왜곡된 작업에 대한 고유한 규칙을 정의하려는 경우 매개 변수를 선택할 수 있습니다. 기울어진 단계기울어진 문자 섹션이 그에 따라 갱신됩니다.

  • 기울어진 단계 - 두 번째 섹션에는 이전에 지정한 조건을 충족하는 기울어진 작업을 포함한 단계가 나타납니다. 한 단계에서 둘 이상의 기울어진 작업이 있는 경우 기울어진 스테이지 테이블에는 가장 기울어진 작업(예: 데이터 기울이기에 대한 가장 큰 데이터)만 표시됩니다.

    Spark ui 진단 데이터 기울이기 탭을 보여 주는 스크린샷

  • 기울이기 차트 - 기울이기 단계 테이블의 행을 선택하면 데이터 읽기 및 실행 시간에 따라 기울이기 차트에 더 많은 작업 분포 정보가 표시됩니다. 기울어진 작업은 빨간색으로 표시되고 일반 작업은 파란색으로 표시됩니다. 차트는 최대 100개의 샘플 작업을 표시하며 작업 세부 정보는 오른쪽 아래 패널에 표시됩니다.

    10단계의 Spark ui 기울이기 차트를 보여 주는 스크린샷

시간 왜곡

시간 기울이기 탭은 작업 실행 시간을 기준으로 기울어진 작업을 표시합니다.

  • 매개 변수 지정 - 첫 번째 섹션에는 시간 기울이기를 검색하는 데 사용되는 매개 변수가 표시됩니다. 시간 기울이기를 감지하는 기본 조건은 작업 실행 시간이 평균 실행 시간의 3배보다 크고 작업 실행 시간이 30초보다 큽니다. 필요에 따라 매개 변수를 변경할 수 있습니다. 기울이기 단계기울이기 차트는 앞에서 설명한 데이터 기울이기 탭과 마찬가지로 해당 단계 및 작업 정보를 표시합니다.

  • 시간 왜곡을 선택한 다음 필터링된 결과가 왜곡된 단계 섹션에 표시되며, 이는 매개변수 지정 섹션에 설정된 변수에 따라 달라집니다. 기울어진 스테이지 섹션에서 한 항목을 선택한 다음 해당 차트가 섹션 3에서 초안으로 작성되고 작업 세부 정보가 오른쪽 아래쪽 패널에 표시됩니다.

    Spark UI 진단 시간 비대칭 섹션을 보여주는 스크린샷.

실행기 사용 현황 분석

이 기능은 현재 Fabric에서 더 이상 사용되지 않습니다. 이 방법을 해결 방법으로 계속 사용하려는 경우 다음과 같이 URL에서 경로 "/diagnostic" 뒤에 "/executorusage"를 명시적으로 추가하여 페이지에 액세스하세요.

URL을 수정하는 방법을 보여 주는 스크린샷

SQL/DataFrame 탭

Spark SQL을 사용하는 워크로드의 경우 SQL 탭은 쿼리 수준 인사이트를 제공합니다.

이 보기를 사용하여 다음을 수행할 수 있습니다.

  • 쿼리 실행 계획 분석
  • 쿼리 기간 및 성능 검토

참고

특정 탭의 가용성은 워크로드 유형 및 활성화된 Spark 기능에 따라 달라집니다.

Spark 실행기 순환 로그: 대규모 및 장기 작업에 더 쉽게 접근하기

Spark 애플리케이션의 규모와 기간이 계속 증가함에 따라 효율적인 로그 관리 및 분석이 점점 더 중요해지고 있습니다. 이러한 진화하는 요구를 해결하기 위해 Spark 기록 서버(완료된 애플리케이션용) 및 Spark UI(애플리케이션 실행용)에 향상된 기능을 도입하여 Spark 3.4 이상에 실행기 롤링 로그를 사용하도록 설정했습니다.

이러한 향상된 기능을 통해 실행기 로그가 16MB를 초과하거나 Spark 작업이 1시간 이상 실행되면 시스템은 자동으로 로그를 매시간 세그먼트로 분할합니다. 이렇게 하면 매우 큰 파일을 처리하지 않고도 로그를 더 쉽게 탐색, 보기 및 다운로드할 수 있습니다.

이제 다음과 같은 작업을 수행할 수 있습니다.

  • 시간별 로그를 확인하여 특정 실행 기간을 빠르게 파악
  • 작업이 계속 실행되는 동안 최신 활성 로그에 액세스합니다.
  • 필요에 따라 개별 시간별 로그 또는 모든 로그를 함께 다운로드합니다.

이 기능을 사용하면 사용자가 대규모 단일 로그 파일을 다운로드하거나 여는 번거로움을 방지하면서 특정 시간점에서 로그를 쉽게 찾고 분석할 수 있습니다.

다음은 실행기 롤링 로그 보기의 예입니다.

Spark 실행기 롤링 로그를 보여 주는 스크린샷