Dataproc 클러스터 진단 데이터 보기

"Dataproc 클러스터 진단 데이터 보기"

Dataproc는 클러스터 및 작업 문제 해결에 도움이 되는 다음과 같은 클러스터 진단 데이터를 수집합니다.

체크포인트 데이터

체크포인트 데이터 기능이 사용 설정되었으면 Dataproc이 클러스터 만들기, 클러스터 업데이트, Dataproc Jobs API 작업을 수행하는 동안 진단 데이터를 수집합니다. Dataproc은 Cloud Storage의 클러스터 temp bucket 클러스터에서 데이터를 저장하며, TTL 보관 기간은 90일입니다. 보관 기간이 끝나면 데이터가 삭제됩니다.

데이터 수집 속성 사용 설정: 클러스터를 만들 때 다음과 같은 선택적인 클러스터 속성을 포함할 수 있습니다. 생성된 클러스터에서만 체크포인트 진단 데이터 수집에 영향을 줍니다.

  • 데이터 수집 사용 설정: dataproc:diagnostic.capture.enabled=true 속성을 설정하면 클러스터에서 체크포인트 진단 데이터 수집을 사용 설정합니다.
  • 진단 데이터 공유: dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE 속성을 설정하면 수집된 체크포인트 진단 데이터가 Google Cloud 지원팀과 공유됩니다.
    • 클러스터를 만든 후 다음과 같이 Google Cloud 지원팀에서 사용하는 서비스 계정에 데이터 읽기 액세스 권한을 부여하여 Google Cloud 지원팀과 진단 데이터를 공유할 수 있습니다.
      gcloud storage objects update \
          gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID \
          --add-acl-grant=entity=user-cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com,role=READER --recursive \
      

진단 데이터

진단 데이터는 Cloud Storage에서 gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID/에 기록되는 다음 데이터로 구성됩니다. 이 섹션에서는 이 위치를 진단 데이터 폴더라고 부릅니다.

  • 클러스터 노드 세부정보 로그: Dataproc은 다음 명령어를 실행하여 Cloud Storage의 진단 데이터 폴더에 있는 다음 위치에 대해 YARN 및 HDFS 정보를 수집 및 기록합니다.

    실행된 명령 진단 폴더 내 위치
    yarn node -list -all .../nodes/timestamp/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning .../nodes/timestamp/hdfs-nodes.log

  • 작업 세부정보: Dataproc은 Dataproc Jobs API를 사용해서 작업에 대한 맵리듀스 작업 정보 및 Spark 작업 로그를 저장합니다. 이러한 작업 데이터는 제출된 각 MR 및 Spark 작업에 대해 수집됩니다.

    • 맵리듀스 job.xml: .../jobs/JOB_UUID/mapreduce/job.xml에 저장된 작업 구성 설정이 포함된 파일입니다.
    • Spark 이벤트 로그: .../jobs/JOB_UUID/spark/application-id에 저장된 디버깅에 유용한 작업 실행 세부정보입니다.
  • Linux 시스템 정보: Dataproc은 다음 명령어를 실행하여 Cloud Storage의 진단 데이터 폴더에 있는 다음 위치에서 시스템 정보를 수집하고 저장합니다.

    명령어 진단 폴더 내 위치
    sysctl -a .../system/sysctl.log
    cat /proc/sys/fs/file-nr .../system/fs-file-nr.log
    ping -c 1 .../system/cluster-ping.log
    cp /etc/hosts .../system/hosts_entries.log
    cp /etc/resolv.conf .../system/resolv.conf
  • 구성 파일: Dataproc은 Cloud Storage의 진단 데이터 폴더에 있는 다음 위치에서 다음 구성 파일을 저장합니다.

    포함된 항목 진단 폴더 내 위치
    Dataproc 속성 .../configs/dataproc/dataproc.properties
    `/etc/google-dataproc/`의
    모든 파일
    .../configs/dataproc/
    `/etc/hadoop/conf/`의
    모든 파일
    .../configs/hadoop/
    `/etc/hive/conf/`의 모든 파일 .../configs/hive/
    `/etc/hive-hcatalog/conf/`의
    모든 파일
    .../configs/hive-hcatalog/
    `/etc/knox/conf/`의 모든 파일 .../configs/knox/
    `/etc/pig/conf/`의 모든 파일 .../configs/pig/
    `/etc/presto/conf/`의
    모든 파일
    .../configs/presto/
    `/etc/spark/conf/`의
    모든 파일
    .../configs/spark/
    `/etc/tez/conf/`의 모든 파일 .../configs/tez/
    `/etc/zookeeper/conf/`의
    모든 파일
    .../configs/zookeeper/

스냅샷 데이터

다음 gcloud dataproc clusters diagnose 명령어를 실행하여 실행 중인 클러스터에서 진단 데이터 스냅샷을 수집할 수 있습니다. 데이터는 Cloud Storage의 Dataproc 스테이징 버킷에 아카이브(tar) 파일로 기록됩니다.

gcloud dataproc clusters diagnose CLUSTER_NAME \
    --region=REGION \
    --tarball-access=GOOGLE_DATAPROC_DIAGNOSE

참고:

  • CLUSTER_NAME: 진단할 클러스터의 이름입니다.
  • REGION: 클러스터의 리전입니다(예: us-central1).
  • --tarball-access=GOOGLE_DATAPROC_DIAGNOSE 이 플래그는 진단 tar 파일에 대한 액세스 권한을 Google Cloud 지원팀에 제공합니다. 진단 tar 파일의 Cloud Storage 경로를 Google Cloud 지원팀에 제공하세요.

  • Additional flags:

    • --start-time--end-time: 두 플래그를 사용하여 진단 데이터를 수집할 시간 범위를 %Y-%m-%dT%H:%M:%S.%fZ 형식으로 지정합니다. 또한 시간 범위를 지정하면 해당 기간 동안 Dataproc 자동 확장 로그 수집이 사용 설정됩니다. 기본적으로는 Dataproc 자동 확장 로그는 진단 스냅샷 데이터에 수집되지 않습니다.

    • 다음 플래그 중 하나를 사용해서 특정 작업 드라이버, Spark 이벤트, YARN 애플리케이션, Sparklens 출력 로그를 수집할 수 있습니다.

      • --job-ids: 쉼표로 구분된 작업 ID 목록
      • --yarn-application-ids: 쉼표로 구분된 YARN 애플리케이션 ID 목록

        • YARN 애플리케이션 로그를 수집하려면 YARN 로그 집계를 사용 설정(yarn.log-aggregation-enable=true)해야 합니다.
        • 맵리듀스 작업의 경우 YARN 애플리케이션 로그만 수집됩니다.

필요한 경우 진단 스크립트 실행

클러스터가 오류 상태이면 gcloud dataproc clusters diagnose 명령어가 실패하거나 시간이 초과될 수 있으며 Dataproc 서버의 진단 태스크를 수락할 수 없습니다. 진단 명령어를 실행하는 대신 SSH를 사용하여 클러스터 마스터 노드에 연결하고, 진단 스크립트를 다운로드하고, 마스터 노드에서 스크립트를 로컬로 실행할 수 있습니다.

gcloud compute ssh HOSTNAME
gcloud storage cp gs://dataproc-diagnostic-scripts/diagnostic-script.sh .
sudo bash diagnostic-script.sh

진단 아카이브 tar 파일은 로컬 디렉터리에 저장됩니다. 명령어 출력에는 tar 파일의 위치가 나열되고 tar 파일을 Cloud Storage 버킷에 업로드하는 방법이 설명됩니다.

진단 스냅샷 데이터

클러스터 스냅샷 데이터에는 진단 요약과 여러 아카이브 섹션이 포함됩니다.

진단 요약: 이 아카이브 파일에는 루트 디렉터리에 있는 summary.txt가 포함되어 있습니다. 이 요약 파일은 YARN, HDFS, 디스크, 네트워킹 상태를 비롯한 클러스터 상태 개요와 잠재적인 문제에 대한 경고를 보여줍니다.

아카이브 섹션: 아카이브 파일에는 다음 아카이브 파일 위치에 기록되는 다음 정보가 포함됩니다.

  • 데몬 및 서비스 정보

    실행된 명령 아카이브 내 위치
    yarn node -list -all /system/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning /system/hdfs-nodes.log
    hdfs dfs -du -h /system/hdfs-du.log
    service --status-all /system/service.log
    systemctl --type service /system/systemd-services.log
    curl "http://${HOSTNAME}:8088/jmx" /metrics/resource_manager_jmx
    curl "http://${HOSTNAME}:8088/ws/v1/cluster/apps" /metrics/yarn_app_info
    curl "http://${HOSTNAME}:8088/ws/v1/cluster/nodes" /metrics/yarn_node_info
    curl "http://${HOSTNAME}:9870/jmx" /metrics/namenode_jmx

  • JVM 정보

    실행된 명령 아카이브 내 위치
    jstack -l "${DATAPROC_AGENTPID}" jstack/agent${DATAPROC_AGENT_PID}.jstack
    jstack -l "${PRESTOPID}" jstack/agent${PRESTO_PID}.jstack
    jstack -l "${JOB_DRIVERPID}" jstack/driver${JOB_DRIVER_PID}.jstack
    jinfo "${DATAPROC_AGENTPID}" jinfo/agent${DATAPROC_AGENT_PID}.jstack
    jinfo "${PRESTOPID}" jinfo/agent${PRESTO_PID}.jstack
    jinfo "${JOB_DRIVERPID}" jinfo/agent${JOB_DRIVER_PID}.jstack

  • Linux 시스템 정보

    실행된 명령 아카이브 내 위치
    df -h /system/df.log
    ps aux /system/ps.log
    free -m /system/free.log
    netstat -anp /system/netstat.log
    sysctl -a /system/sysctl.log
    uptime /system/uptime.log
    cat /proc/sys/fs/file-nr /system/fs-file-nr.log
    ping -c 1 /system/cluster-ping.log

  • 로그 파일

    포함된 항목 아카이브 내 위치
    파일 이름에 다음 접두사가 있는 /var/log의 모든 로그:
    cloud-sql-proxy
    dataproc
    druid
    gcdp
    google
    hadoop
    hdfs
    hive
    knox
    presto
    spark
    syslog
    yarn
    zookeeper
    파일은 아카이브 logs 폴더에 저장되고 원래 파일 이름은 유지됩니다.
    클러스터의 각 노드(마스터 및 워커)에 대한 Dataproc 노드 시작 로그. 파일은 클러스터의 각 머신별로 하위 폴더가 구분된 아카이브 node_startup 폴더에 저장됩니다.
    journalctl -u google-dataproc-component-gateway의 구성요소 게이트웨이 로그 /logs/google-dataproc-component-gateway.log

  • 구성 파일

    포함된 항목 아카이브 내 위치
    VM 메타데이터 /conf/dataproc/metadata
    /etc/environment의 환경 변수 /conf/dataproc/environment
    Dataproc 속성 /conf/dataproc/dataproc.properties
    /etc/google-dataproc/의 모든 파일 /conf/dataproc/
    /etc/hadoop/conf/의 모든 파일 /conf/hadoop/
    /etc/hive/conf/의 모든 파일 /conf/hive/
    /etc/hive-hcatalog/conf/의 모든 파일 /conf/hive-hcatalog/
    /etc/knox/conf/의 모든 파일 /conf/knox/
    /etc/pig/conf/의 모든 파일 /conf/pig/
    /etc/presto/conf/의 모든 파일 /conf/presto/
    /etc/spark/conf/의 모든 파일 /conf/spark/
    /etc/tez/conf/의 모든 파일 /conf/tez/
    /etc/zookeeper/conf/의 모든 파일 /conf/zookeeper/

아카이브 파일 공유

아카이브 파일을 Google Cloud 지원팀 또는 사용자와 공유하여 클러스터 또는 작업 문제 해결에 도움을 얻을 수 있습니다.

아카이브 파일을 공유하려면 다음 안내를 따르세요.

  • Cloud Storage에서 아카이브 파일을 복사한 후 다운로드한 아카이브를 공유합니다.
  • 다른 Google Cloud 사용자 또는 프로젝트의 파일 액세스를 허용하도록 아카이브에 대한 권한을 변경합니다.

    예시: 다음 명령어는 아카이브에 대한 읽기 권한을 test-project 프로젝트 소유자에게 부여합니다.

    gcloud storage objects update PATH_TO_ARCHIVE} --add-acl-grant=entity=project-owners-test-project,role=READER