다음 섹션에서 설명하는 정보와 도구를 사용하여 Spark를 위한 Dataproc Serverless 일괄 워크로드를 모니터링하고 문제를 해결할 수 있습니다.
영구 기록 서버
Spark를 위한 Dataproc Serverless는 워크로드를 실행하는 데 필요한 컴퓨팅 리소스를 만들고 해당 리소스에서 워크로드를 실행한 후 워크로드가 완료되면 리소스를 삭제합니다. 워크로드가 완료된 후에 워크로드 측정항목 및 이벤트가 지속되지 않습니다. 하지만 영구 기록 서버(PHS)를 사용하여 Cloud Storage의 워크로드 애플리케이션 기록(이벤트 로그)을 보관할 수 있습니다.
일괄 워크로드에서 PHS를 사용하려면 다음 단계를 따르세요.
워크로드를 제출할 때 PHS를 지정합니다.
구성요소 게이트웨이를 사용하여 PHS에 연결하여 애플리케이션 세부정보, 스케줄러 단계, 태스크 수준 세부정보, 환경 및 실행자 정보를 확인합니다.
Spark를 위한 Dataproc Serverless 로그
Logging은 Spark를 위한 Dataproc Serverless에서 기본적으로 사용 설정되며 워크로드 로그는 워크로드가 완료된 후에도 유지됩니다. Spark를 위한 Dataproc Serverless는 Cloud Logging에서 워크로드 로그를 수집합니다.
로그 탐색기의 Cloud Dataproc Batch
리소스에서 Spark를 위한 Dataproc Serverless 로그에 액세스할 수 있습니다.
Spark를 위한 Dataproc Serverless 로그 쿼리
Google Cloud 콘솔의 로그 탐색기에는 일괄 워크로드 로그를 검사하는 쿼리를 빌드하는 데 도움이 되는 쿼리 창이 있습니다. 일괄 워크로드 로그를 검사하는 쿼리를 빌드하는 단계는 다음과 같습니다.
- 현재 프로젝트가 선택됩니다. 프로젝트 범위 세분화를 클릭하여 다른 프로젝트를 선택할 수 있습니다.
일괄 로그 쿼리를 정의합니다.
필터 메뉴를 사용하여 일괄 워크로드를 필터링합니다.
모든 리소스에서 Cloud Dataproc 일괄 리소스를 선택합니다.
리소스 선택 패널에서 일괄 LOCATION를 선택한 다음 BATCH ID를 선택합니다. 이러한 일괄 파라미터는 Google Cloud 콘솔의 Dataproc 배치 페이지에 나열됩니다.
적용을 클릭합니다.
로그 이름 선택에서 로그 이름 검색 상자에
dataproc.googleapis.com
을 입력하여 쿼리할 로그 유형을 제한합니다. 나열된 로그 파일 이름 중 하나 이상을 선택합니다.
쿼리 편집기를 사용하여 VM별 로그를 필터링합니다.
다음 예시와 같이 리소스 유형 및 VM 리소스 이름을 지정합니다.
참고:resource.type="cloud_dataproc_batch" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
- BATCH_UUID: 일괄 UUID는 Google Cloud 콘솔의 배치 페이지에서 일괄 ID를 클릭할 때 열리는 배치 세부정보 페이지에 표시됩니다.
일괄 로그에는 VM 리소스 이름에 일괄 UUID도 나열됩니다. 다음은 일괄 driver.log의 예시입니다.
쿼리 실행을 클릭합니다.
Spark를 위한 Dataproc Serverless 로그 유형 및 샘플 쿼리
다음 목록에서는 다양한 Dataproc Serverless 로그 유형을 설명하고 각 로그 유형에 대한 샘플 로그 탐색기 쿼리를 제공합니다.
dataproc.googleapis.com/output
: 이 로그 파일에는 일괄 워크로드 출력이 포함되어 있습니다. Spark를 위한 Dataproc Serverless는 일괄 출력을output
네임스페이스로 스트리밍하고 파일 이름을JOB_ID.driver.log
로 설정합니다.출력 로그의 샘플 로그 탐색기 쿼리:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Foutput"
dataproc.googleapis.com/spark
:spark
네임스페이스는 Dataproc 클러스터 마스터 및 작업자 VM에서 실행되는 데몬 및 실행자의 Spark 로그를 집계합니다. 각 로그 항목에는 다음과 같이 로그 소스를 식별하는master
,worker
또는executor
구성요소 라벨이 포함됩니다.executor
: 사용자 코드 실행자의 로그입니다. 일반적으로 이러한 로그는 분산 로그입니다.master
: Spark 독립형 리소스 관리자 마스터의 로그로, Compute Engine YARNResourceManager
로그의 Dataproc과 유사합니다.worker
: Spark 독립형 리소스 관리자 작업자의 로그로, Compute Engine YARNNodeManager
로그의 Dataproc과 유사합니다.
spark
네임스페이스의 모든 로그에 대한 샘플 로그 탐색기 쿼리:resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
spark
네임스페이스의 Spark 독립형 구성요소 로그에 대한 샘플 로그 탐색기 쿼리:resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark" jsonPayload.component="COMPONENT"
dataproc.googleapis.com/startup
:startup
네임스페이스에는 일괄(클러스터) 시작 로그가 포함됩니다. 모든 초기화 스크립트 로그가 포함됩니다. 구성요소는 다음 예시와 같이 라벨로 식별됩니다. 특정 VM의 로그 시작 로그에 대한 샘플 로그 탐색기 쿼리:startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fstartup" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
dataproc.googleapis.com/agent
:agent
네임스페이스는 Dataproc 에이전트 로그를 집계합니다. 각 로그 항목에는 로그 소스를 식별하는 파일 이름 라벨이 포함되어 있습니다.지정된 작업자 VM에서 생성된 에이전트 로그에 대한 샘플 로그 탐색기 쿼리:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fagent" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
dataproc.googleapis.com/autoscaler
:autoscaler
네임스페이스는 Spark를 위한 Dataproc Serverless 자동 확장 처리 로그를 집계합니다.지정된 작업자 VM에서 생성된 에이전트 로그에 대한 샘플 로그 탐색기 쿼리:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fautoscaler" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
자세한 내용은 Dataproc 로그를 참조하세요.
Dataproc Serverless 감사 로그
Dataproc Serverless 감사 로그에 대한 자세한 내용은 Dataproc 감사 로깅을 참조하세요.
워크로드 측정항목
기본적으로 Spark를 위한 Dataproc Serverless는 Spark 측정항목 수집 속성을 사용하여 하나 이상의 Spark 측정항목 수집을 사용 중지하거나 재정의하지 않는 한 사용 가능한 Spark 측정항목의 수집을 사용 설정합니다.
Google Cloud 콘솔의 측정항목 탐색기 또는 일괄 세부정보 페이지에서 워크로드 측정항목을 볼 수 있습니다.
일괄 측정항목
Dataproc batch
리소스 측정항목은 일괄 실행자 수와 같은 일괄 리소스에 대한 통계를 제공합니다. 일괄 측정항목에는 dataproc.googleapis.com/batch
라는 프리픽스가 붙습니다.
Spark 측정항목
사용 가능한 Spark 측정항목에는 Spark 드라이버 및 실행자 측정항목, 시스템 측정항목이 포함됩니다. 사용 가능한 Spark 측정항목에는 custom.googleapis.com/
프리픽스가 추가됩니다.
측정항목 알림 설정
Dataproc 측정항목 알림을 만들어 워크로드 문제에 대한 알림을 받을 수 있습니다.
차트 만들기
Google Cloud 콘솔의 측정항목 탐색기를 사용하여 워크로드 측정항목을 시각화하는 차트를 만들 수 있습니다. 예를 들어 disk:bytes_used
를 표시하는 차트를 만든 다음 batch_id
로 필터링할 수 있습니다.
Cloud Monitoring
Monitoring은 워크로드 메타데이터와 측정항목을 사용하여 Spark를 위한 Dataproc Serverless 워크로드의 상태와 성능에 대한 통계를 제공합니다. 워크로드 측정항목에는 Spark 측정항목, 일괄 측정항목, 작업 측정항목이 포함됩니다.
Google Cloud 콘솔에서 Cloud Monitoring을 사용하여 측정항목을 탐색하고, 차트를 추가하고, 대시보드를 만들고, 알림을 만들 수 있습니다.
대시보드 만들기
여러 프로젝트 및 다양한 Google Cloud 제품의 측정항목을 사용하여 워크로드를 모니터링하는 대시보드를 만들 수 있습니다. 자세한 내용은 커스텀 대시보드 만들기 및 관리를 참조하세요.
고급 문제 해결(미리보기)
이 섹션에서는 Google Cloud 콘솔에서 사용할 수 있는 고급 문제 해결 기능(미리보기)을 다룹니다. 이러한 기능에는 BigQuery의 Gemini 제품의 일부인 Dataproc Serverless의 Gemini 지원 문제 해결이 포함됩니다.
미리보기 기능 액세스
고급 문제 해결 기능의 미리보기 출시를 신청하려면 BigQuery의 Gemini GA 이전 가입 양식을 작성하여 제출합니다. 양식이 승인되면 양식에 등록된 프로젝트에서 미리보기 기능을 사용할 수 있습니다.
미리보기 가격 책정
미리보기에 참여하는 데는 추가 비용이 없습니다. 다음 미리보기 기능이 정식 버전(GA)으로 출시되면 요금이 청구됩니다.
GA 청구 사전 알림은 미리보기 가입 양식에 제공한 이메일 주소로 전송됩니다.
기능 요구사항
신청: 기능을 신청해야 합니다.
권한:
dataproc.batches.analyze
권한이 있어야 합니다.사전 정의된
roles/dataproc.admin
,roles/dataproc.editor
또는roles/dataproc.viewer
역할이 있으면 필요한 권한이 있는 것입니다. 추가 작업이 필요하지 않습니다.커스텀 역할을 사용하여 Dataproc 서비스에 액세스하는 경우 커스텀 역할에
dataproc.batches.analyze
권한이 있어야 합니다. 다음 명령어와 같이 gcloud CLI를 사용하여 권한을 추가할 수 있습니다. 이 명령어는 프로젝트 수준에서 권한을 추가합니다.
gcloud iam roles update CUSTOM_ROLE_ID --project=PROJECT_ID \ --add-permissions="dataproc.batches.analyze"
Dataproc Serverless에 대한 Gemini 지원 문제 해결 사용 설정: Google Cloud 콘솔, gcloud CLI 또는 Dataproc API를 사용하여 반복되는 각 Spark 일괄 워크로드를 제출할 때 Dataproc Serverless에 대한 Gemini 지원 문제 해결을 사용 설정합니다. 이 기능을 반복 일괄 워크로드에서 사용 설정하면 Dataproc은 30일 동안 워크로드 로그의 사본을 저장하고 저장된 로그 데이터를 사용하여 워크로드에 대한 Gemini 지원 문제 해결을 제공합니다. Spark 워크로드 로그 콘텐츠에 대한 자세한 내용은 Spark 로그를 위한 Dataproc Serverless를 참조하세요.
콘솔
반복되는 각 Spark 일괄 워크로드에 Gemini 지원 문제 해결을 사용 설정하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 Dataproc Batches 페이지로 이동합니다.
일괄 워크로드를 만들려면 만들기를 클릭합니다.
컨테이너 섹션에서 배치를 일련의 반복되는 워크로드 중 하나로 식별하는 동질 집단 이름을 입력합니다. 이 동질 집단 이름으로 제출된 두 번째 및 후속 워크로드에 Gemini 지원 분석이 적용됩니다. 예를 들어 일일 TPC-H 쿼리를 실행하는 예약된 워크로드의 동질 집단 이름으로
TPCH-Query1
을 지정합니다.필요에 따라 일괄 생성 페이지의 다른 섹션을 작성한 다음 제출을 클릭합니다. 자세한 내용은 일괄 워크로드 제출을 참조하세요.
gcloud
터미널 창 또는 Cloud Shell에서 다음 gcloud CLI gcloud dataproc batches submit
명령어를 로컬로 실행하여 반복되는 각 Spark 일괄 워크로드에 Gemini 지원 문제 해결을 사용 설정합니다.
gcloud dataproc batches submit COMMAND \ --region=REGION \ --cohort=COHORT \ other arguments ...
다음을 바꿉니다.
- COMMAND: Spark 워크로드 유형(예:
Spark
,PySpark
,Spark-Sql
또는Spark-R
). - REGION: 워크로드가 실행되는 리전.
- COHORT: 배치를 일련의 반복되는 워크로드 중 하나로 식별하는 동질 집단 이름.
이 동질 집단 이름으로 제출된 두 번째 및 후속 워크로드에 Gemini 지원 분석이 적용됩니다. 예를 들어 일일 TPC-H 쿼리를 실행하는 예약된 워크로드의 동질 집단 이름으로
TPCH Query 1
을 지정합니다.
API
batches.create 요청에 RuntimeConfig.cohort
이름을 포함하여 반복되는 각 Spark 일괄 워크로드에 Gemini 지원 문제 해결을 사용 설정합니다. 이 동질 집단 이름으로 제출된 두 번째 및 후속 워크로드에 Gemini 지원 분석이 적용됩니다. 예를 들어 일일 TPC-H 쿼리를 실행하는 예약된 워크로드의 동질 집단 이름으로 TPCH-Query1
을 지정합니다.
예:
...
runtimeConfig:
cohort: TPCH-Query1
...
Dataproc Serverless의 Gemini 지원 문제 해결
다음 Gemini 지원 문제 해결 미리보기 기능은 Google Cloud 콘솔의 일괄 세부정보 및 일괄 목록 페이지에서 사용할 수 있습니다.
조사 탭: 일괄 세부정보 페이지의 조사 탭에는 다음과 같은 Gemini 지원 문제 해결 패널이 있는 상태 개요(미리보기) 섹션이 있습니다.
- 자동 조정된 항목 하나 이상의 워크로드에서 자동 조정을 사용 설정한 경우 이 패널에는 실행 중인 워크로드, 완료된 워크로드, 실패한 워크로드에 적용된 최근 자동 조정 변경사항이 표시됩니다.
- 현재 문제 진단 및 권장 조치 Gemini에 질문하기를 클릭하여 실패한 워크로드를 수정하거나 성공했지만 느린 워크로드를 개선하기 위한 추천을 요청합니다.
Gemini에 질문하기를 클릭하면 Google Cloud를 위한 Gemini에서 워크로드 로그, Spark 측정항목, Spark 이벤트의 오류, 이상치 또는 하이라이트에 대한 요약을 생성합니다. Google Cloud를 위한 Gemini에서 실패한 워크로드를 수정하거나 성공했지만 느린 워크로드의 성능을 개선하기 위해 수행할 수 있는 권장 단계 목록을 표시할 수도 있습니다.
Gemini 지원 문제 해결 열: 미리보기 출시의 일환으로 Google Cloud 콘솔의 Dataproc 배치 목록 페이지에
What was Autotuned
,What is happening now?
및What can I do about it?
열이 포함됩니다.완료된 배치가
Failed
,Cancelled
또는Succeeded
상태인 경우에만 Gemini에 질문하기 버튼이 표시되고 사용 설정됩니다. Gemini에 질문하기를 클릭하면 Google Cloud를 위한 Gemini에서 워크로드 로그, Spark 측정항목, Spark 이벤트의 오류, 이상치 또는 하이라이트에 대한 요약을 생성합니다. Google Cloud를 위한 Gemini에서 실패한 워크로드를 수정하거나 성공했지만 느린 워크로드의 성능을 개선하기 위해 수행할 수 있는 권장 단계 목록을 표시할 수도 있습니다.
일괄 측정항목 주요 정보
미리보기 출시의 일환으로 Google Cloud 콘솔의 일괄 세부정보 페이지에 중요한 일괄 워크로드 측정항목 값을 표시하는 차트가 포함됩니다. 배치가 완료된 후 측정항목 차트에 값이 채워집니다.
다음 표는 Google Cloud 콘솔의 일괄 세부정보 페이지에 표시되는 Spark 워크로드 측정항목을 나열하고 측정항목 값이 워크로드 상태 및 성능에 대한 통계를 제공하는 방법을 설명합니다.
측정항목 | 표시되는 정보 |
---|---|
실행자 수준의 측정항목 | |
런타임 대비 JVM GC 시간의 비율 | 이 측정항목은 실행자당 런타임 대비 JVM GC(가비지 컬렉션) 시간의 비율을 보여줍니다. 비율이 높으면 특정 실행자 또는 비효율적인 데이터 구조에서 실행되는 태스크 내에서 메모리 누수가 발생해 객체 이탈이 늘어날 수 있습니다. |
분산된 디스크 바이트 | 이 측정항목은 여러 실행자 간에 분산된 총 디스크 바이트 수를 보여줍니다. 실행자에 분산된 많은 디스크 바이트가 표시되는 경우 이는 데이터 편향을 나타낼 수 있습니다. 이 측정항목이 시간이 지나면서 증가한다면 이는 메모리 부족 또는 메모리 누수가 발생한 단계가 있음을 나타낼 수 있습니다. |
읽고 쓴 바이트 | 이 측정항목은 실행자당 작성한 바이트 수와 읽은 바이트 수를 비교하여 보여줍니다. 읽거나 쓰는 바이트 수가 크게 불일치할 경우 복제된 조인이 특정 실행자의 데이터 증폭으로 이어지는 시나리오를 나타낼 수 있습니다. |
읽고 쓴 레코드 | 이 측정항목은 실행자당 읽은 레코드 수와 쓴 레코드 수를 보여줍니다. 읽은 레코드가 많은데 쓴 레코드 수가 적다면 특정 실행자의 처리 로직에 병목 현상이 발생하여 대기 중에 레코드를 읽음을 나타낼 수 있습니다. 읽기와 쓰기에 지속적으로 지연되는 실행자는 해당 노드의 리소스 경합 또는 실행자별 코드 비효율성을 나타낼 수 있습니다. |
셔플 쓰기 시간 대비 런타임 비율 | 이 측정항목은 전체 런타임과 비교하여 실행자가 셔플 런타임에 소비한 시간을 보여줍니다. 일부 실행자에서 이 값이 높다면 데이터 편향 또는 비효율적인 데이터 직렬화를 나타낼 수 있습니다. Spark UI에서 셔플 쓰기 시간이 긴 단계를 식별할 수 있습니다. 이러한 단계 내에서 평균 완료 시간보다 더 오래 걸리는 이상치 태스크를 찾습니다. 셔플 쓰기 시간이 긴 실행자가 디스크 I/O 활동도 많이 표시하는지 확인합니다. 더 효율적인 직렬화와 추가 파티셔닝 단계가 도움이 될 수 있습니다. 레코드 읽기에 비해 레코드 쓰기가 매우 크다면 비효율적인 조인이나 잘못된 변환으로 인해 의도하지 않은 데이터 중복이 발생한 것일 수 있습니다. |
애플리케이션 수준의 측정항목 | |
단계 진행 | 이 측정항목은 실패, 대기, 실행 단계의 단계 수를 보여줍니다. 실패하거나 대기 중인 단계가 많으면 데이터 편향이 있을 수 있습니다. 데이터 파티션을 확인하고 Spark UI의 단계 탭을 사용하여 단계 실패 이유를 디버그합니다. |
일괄 Spark 실행자 | 이 측정항목은 필요한 실행자 수와 실행 중인 실행자 수를 보여줍니다. 필수 실행자와 실행 중인 실행자의 차이가 크다면 자동 확장 문제를 나타낼 수 있습니다. |
VM 수준의 측정항목 | |
사용된 메모리 | 이 측정항목은 사용 중인 VM 메모리의 비율을 보여줍니다. 마스터 비율이 높으면 드라이버에 메모리 부족 문제가 있음을 나타낼 수 있습니다. 다른 VM 노드의 경우 비율이 높으면 실행자의 메모리가 부족하여 디스크 유출이 증가하고 워크로드 런타임이 느려질 수 있음을 의미합니다. Spark UI를 사용하여 실행자를 분석하여 GC 시간이 길고 태스크 실패가 많은지 확인합니다. 또한 대규모 데이터 세트 캐싱 및 불필요한 변수 브로드캐스트에 관한 Spark 코드를 디버그합니다. |
작업 로그
미리보기 출시의 일환으로 Google Cloud 콘솔의 일괄 세부정보 페이지에 작업(일괄 워크로드) 로그가 표시됩니다. 로그에는 워크로드 출력 및 Spark 로그에서 필터링된 경고와 오류가 포함됩니다. 로그 심각도를 선택하고 필터를 추가한 후 로그 탐색기에서 보기 아이콘을 클릭하여 로그 탐색기에서 선택한 일괄 로그를 열 수 있습니다.
예를 들어 Google Cloud 콘솔의 일괄 세부정보 페이지에 있는 심각도 선택기에서 Errors
를 선택하면 로그 탐색기가 열립니다.
Spark UI(미리보기)
프로젝트를 Spark UI 미리보기 기능에 등록한 경우 Dataproc PHS(영구 기록 서버) 클러스터를 만들지 않고도 Google Cloud 콘솔에서 Spark UI를 볼 수 있습니다. Spark UI는 일괄 워크로드에서 Spark 실행 세부정보를 수집합니다. 자세한 내용은 Spark UI 미리보기 출시의 일환으로 등록된 고객에게 배포된 사용자 가이드를 참조하세요.