Dataproc 영구 기록 서버

개요

Dataproc 클러스터가 삭제된 이후 사용자가 진단 또는 다른 목적으로 작업 기록 파일을 보려는 경우가 있습니다. Dataproc 영구 기록 서버(PHS)는 활성 또는 삭제된 Dataproc 클러스터에서 실행되는 작업의 작업 기록을 볼 수 있는 UI를 제공합니다.

영구 기록 서버는 단일 노드 Dataproc 클러스터에서 실행되며 Cloud Storage에 작업 기록 파일을 저장하고 액세스하며 맵리듀스, Spark, Pig 작업을 지원합니다. 이 기능은 Dataproc 이미지 버전 1.4-debian10 이상에서 사용할 수 있습니다.

Dataproc 작업 클러스터 설정

작업을 실행하고 영구 기록 서버 클러스터에서 액세스 및 표시될 작업 로그를 저장할 Dataproc 클러스터를 만들 때 다음 플래그와 클러스터 속성을 지정합니다.

  • --enable-component-gateway: 필수 플래그. 구성요소 게이트웨이를 사용 설정하려면 이 플래그를 사용해야 합니다.
  • dataproc:job.history.to-gcs.enabled: 필수 클러스터 속성입니다. Cloud Storage에서 작업 기록 스토리지를 사용 설정하려면 이 속성을 'true'로 설정해야 합니다.
  • spark:spark.history.fs.logDirectoryspark:spark.eventLog.dir 선택적 클러스터 속성. 이 플래그는 Spark 작업 기록 및 이벤트 로그를 각각 작성할 위치를 지정합니다. 사용하는 경우 두 플래그를 모두 설정하고 동일한 버킷 내 디렉터리를 가리켜야 합니다.
    샘플 속성:
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
    
  • mapred:mapreduce.jobhistory.intermediate-done-dirmapred:mapreduce.jobhistory.done-dir: 선택적 클러스터 속성. 이러한 플래그는 중간 및 최종 맵리듀스 작업 기록 파일을 각각 쓸 Cloud Storage 위치를 지정합니다. 사용하는 경우 두 플래그를 모두 설정하고 동일한 버킷 내 디렉터리를 가리켜야 합니다. 중간 mapreduce.jobhistory.intermediate-done-dir 위치는 임시 스토리지입니다. 맵리듀스 작업이 완료되면 중간 파일이 mapreduce.jobhistory.done-dir 위치로 이동합니다.
    샘플 속성:
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
    
  • 다음 속성은 1.4 이상 이미지의 이벤트 로그에 대한 Cloud Storage 플러시 동작을 제어합니다. 참고: 이러한 속성의 기본 구성은 Spark 이벤트 로그를 저장하기 위해 Cloud Storage를 사용하는 클러스터에 대해 Spark 기록 서버 UI에서 실행 중인 작업 표시를 사용 설정합니다.
    spark:spark.history.fs.gs.outputstream.type(default:BASIC)
    spark:spark.history.fs.gs.outputstream.sync.min.interval.ms (default: 5000ms).
    
  1. gcloud dataproc clusters create 명령어를 실행하여 작업 클러스터를 만듭니다. 클러스터는 1.4-debian10 이상으로 생성되어야 합니다. 참고: 가독성을 위해 --property 플래그 값은 별도의 행에 표시합니다. 명령어를 실행할 때 쉼표로 구분된 모든 --property 플래그 값을 한 줄에 지정해야 합니다.
    gcloud dataproc clusters create cluster-name \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='dataproc:job.history.to-gcs.enabled=true,
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory/spark-job-history,
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done'
    

다음 간소화된 명령어를 실행하여 Dataproc에서 작업 기록 파일에 대한 Cloud Storage 위치를 설정할 수 있습니다.

gcloud dataproc clusters create cluster-name \
    --region=region \
    --image-version=1.4-debian10 \
    --enable-component-gateway \
    --properties='dataproc:job.history.to-gcs.enabled=true'

위에 나와 있는 단순화된 명령어를 사용하면 작업 기록 파일이 기본 디렉터리의 Dataproc 임시 버킷 /spark-job-history, /mapreduce-job-history/done, /mapreduce-job-history/intermediate-done에 저장됩니다. 임시 버킷 Cloud Storage 위치는 gcloud dataproc clusters describe cluster-name --region=region 명령어 출력에 나열됩니다. 작업 기록 파일의 Cloud Storage 위치도 클러스터의 /etc/spark/conf/spark-defaults.conf/etc/hadoop/conf/mapred-site.xml 파일에 나열됩니다.

작업 클러스터 마스터 노드에 SSH로 설정한 후의 예:

cat /etc/spark/conf/spark-defaults.conf
...
spark.history.fs.logDirectory=gs://temp-bucket/spark-job-history
spark.eventLog.dir=gs://temp-bucket/spark-job-history
cat /etc/hadoop/conf/mapred-site.xml
...
<property>
  <name>mapreduce.jobhistory.done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done</value>
</property>
<property>
  <name>mapreduce.jobhistory.intermediate-done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done_intermediate</value>
</property>

영구 기록 서버 설정

PHS 단일 노드 클러스터를 만들 때 다음 플래그와 클러스터 속성을 지정합니다.

  • --enable-component-gateway: 필수 플래그. 구성요소 게이트웨이를 사용 설정하려면 이 플래그를 사용해야 합니다.
  • spark:spark.history.fs.logDirectory: 영구 Spark 작업 기록을 사용 설정하는 데 필요한 클러스터 속성입니다. 이 속성은 PHS가 작업 클러스터에서 작성한 Spark 작업 기록 로그에 액세스할 Cloud Storage 버킷 및 디렉터리를 지정합니다(Dataproc 작업 클러스터 설정 참조). 특정 버킷 디렉터리를 지정하는 대신 별표를 와일드 카드로 사용(예: gs://bucket-name/*/spark-job-history)하여 PHS 서버가 서로 다른 작업 클러스터로 작성한 지정 버킷의 여러 디렉터리로 일치시킬 수 있도록 허용합니다(단 효율적 고려사항: 중간 경로 와일드 카드 사용 참조).
  • mapred:mapreduce.jobhistory.read-only.dir-pattern: 영구 맵리듀스 작업 기록을 사용 설정하는 데 필요한 클러스터 속성입니다. 이 속성은 PHS가 작업 클러스터에서 작성한 맵리듀스 작업 기록 로그에 액세스할 Cloud Storage 버킷 디렉터리를 지정합니다(작업 클러스터 설정 참조). 특정 버킷 디렉터리를 지정하는 대신 별표를 와일드 카드로 사용(예: gs://bucket-name/*/mapreduce-job-history/done)하여 PHS 서버가 서로 다른 작업 클러스터로 작성한 지정 버킷의 여러 디렉터리로 일치시킬 수 있도록 허용합니다(단 효율적 고려사항: 중간 경로 와일드 카드 사용 참조).
  1. gcloud dataproc clusters create 명령어를 실행하여 단일 노드 Dataproc PHS 클러스터를 만듭니다.
    gcloud dataproc clusters create cluster-name \
        --single-node \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history,mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done'
    

Cloud Console에서 PHS 단일 노드 클러스터의 클러스터 세부정보 페이지로 이동한 다음 WEB INTERFACES 탭을 클릭합니다. 구성요소 게이트웨이에서 'MapReduce 작업 기록' 또는 'Spark 기록 서버'를 클릭하여 맵리듀스 및 Spark 작업 기록 UI를 봅니다.

Spark 기록 서버 UI

다음 스크린샷은 작업 클러스터의 spark.history.fs.logDirectoryspark:spark.eventLog.dir를 설정한 후 job-cluster-1 및 job-cluster-2에서 실행되는 Spark 작업에 대한 링크를 보여주는 Spark기록 서버 UI를 보여주며 PHS 클러스터의 spark.history.fs.logDirectory 위치는 다음과 같습니다.

job-cluster-1 gs://example-cloud-storage-bucket/job-cluster-1/spark-job-history
job-cluster-2 gs://example-cloud-storage-bucket/job-cluster-2/spark-job-history
phs-cluster gs://example-cloud-storage-bucket/*/spark-job-history

검색창에 이름을 입력하여 Spark 기록 서버 UI에서 앱 이름별로 작업을 나열할 수 있습니다. 앱 이름은 다음 방법 중 하나로 설정할 수 있습니다(우선순위 순으로 나열됨).

  1. Spark 컨텍스트를 만들 때 애플리케이션 코드 내에서 설정
  2. 작업이 제출될 때 spark.app.name 속성에서 설정
  3. Dataproc에서 작업의 전체 REST 리소스 이름으로 설정(projects/project-id/regions/region/jobs/job-id)

이벤트 로그

Spark 기록 서버 UI는 Spark 이벤트 로그를 다운로드하도록 클릭할 수 있는 이벤트 로그 버튼을 제공합니다. 이러한 로그는 Spark 애플리케이션의 수명 주기를 검사하는 데 유용합니다.

Spark 작업

Spark 애플리케이션은 여러 작업으로 분류되며, 작업은 여러 단계로 세분화됩니다. 각 단계에는 실행자 노드(작업자)에서 실행되는 여러 태스크가 있을 수 있습니다.

  • UI에서 Spark 앱 ID를 클릭하여 애플리케이션 내의 이벤트 타임라인 및 작업 요약을 제공하는 Spark 작업 페이지를 엽니다.

  • 작업을 클릭하여 방향성 비순환 그래프(DAG)와 작업 단계 요약을 포함한 작업 세부정보 페이지를 엽니다.

  • 단계를 클릭하거나 단계 탭을 사용하여 단계 세부정보 페이지를 여는 단계를 선택합니다.

    단계 세부정보에는 DAG 시각화, 이벤트 타임라인, 단계 내의 태스크 측정항목이 포함됩니다. 이 페이지에서 스트랭글된 태스크, 스케줄러 지연, 메모리 부족 오류와 관련된 문제를 해결할 수 있습니다. DAG 시각화 장치는 단계가 파생된 코드 줄을 보여주는데, 이를 통해 문제를 코드로 추적하는 데 도움이 됩니다.

  • Spark 애플리케이션의 드라이버 및 실행자 노드에 대한 자세한 내용을 보려면 실행자 탭을 클릭하세요.

    이 페이지의 중요한 정보에는 코어 수 및 각 실행자에서 실행된 태스크 수가 포함됩니다.