Erfassung von Diagnosedaten für Dataproc-Cluster

„Dataproc-Cluster-Diagnosedaten ansehen“

Sie können die folgenden Diagnosedaten erfassen, um Probleme mit Clustern und Jobs zu beheben:

  • Checkpoint-Diagnosedaten: Wenn diese Option beim Erstellen des Clusters aktiviert ist, werden während des Clusterlebenszyklus Checkpoint-Diagnosedaten von Dataproc erfasst.
  • Snapshot-Diagnosedaten: Sie können einen einmaligen Snapshot von Cluster-Diagnosedaten erfassen.

Erfassung von Diagnosedaten am Prüfpunkt

Wenn die Funktion beim Erstellen des Clusters aktiviert ist, erfasst Dataproc Diagnosedaten für Checkpoints während des Erstellens des Clusters, der Clusteraktualisierung und der Dataproc-Job-Vorgänge.

Speicherort der Prüfpunktdaten

Dataproc speichert Diagnosedaten für Prüfpunkte im temporären Bucket des Clusters in Cloud Storage im folgenden Ordner (checkpoint diagnostic data folder):

gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID 

Der temporäre Standard-Cluster-Bucket hat eine TTL-Aufbewahrungsdauer von 90 Tagen. Die Daten werden am Ende der Aufbewahrungsdauer gelöscht. Beim Erstellen eines Clusters können Sie einen eigenen temporären Cluster-Bucket mit einem anderen TTL-Zeitraum angeben.

Diagnosedaten für Prüfpunkte

  • Clusterknoten-Detailprotokolle:Dataproc führt die folgenden Befehle aus, um YARN- und HDFS-Informationen zu erfassen und in die folgenden Speicherorte im Ordner mit den Checkpoint-Diagnosedaten in Cloud Storage zu schreiben.

    Ausgeführter Befehl Speicherort im Diagnoseordner
    yarn node -list -all .../nodes/timestamp/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning .../nodes/timestamp/hdfs-nodes.log

  • Jobdetails:Dataproc speichert Informationen zu MapReduce-Jobs und Spark-Joblogs für Jobs, die die Dataproc Jobs API verwenden. Diese Jobdaten werden für jeden eingereichten MapReduce- und Spark-Job erhoben.

    • MapReduce job.xml: Eine Datei mit Jobkonfigurationseinstellungen, die unter .../jobs/JOB_UUID/mapreduce/job.xml gespeichert ist.
    • Spark-Ereignisprotokolle: Details zur Jobausführung, die für die Fehlerbehebung nützlich sind, gespeichert unter .../jobs/JOB_UUID/spark/application-id.
  • Linux-Systeminformationen:Dataproc führt die folgenden Befehle aus, um Systeminformationen zu erfassen und an den folgenden Speicherorten im Ordner mit den Checkpoint-Diagnosedaten in Cloud Storage zu speichern.

    Befehl Speicherort im Diagnoseordner
    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
  • Konfigurationsdateien:Dataproc speichert die folgenden Konfigurationsdateien an den folgenden Speicherorten im Ordner mit den Checkpoint-Diagnosedaten in Cloud Storage.

    Enthaltene Elemente Speicherort im Diagnoseordner
    Dataproc-Attribute .../configs/dataproc/dataproc.properties
    Alle Dateien in
    `/etc/google-dataproc/`
    .../configs/dataproc/
    Alle Dateien in
    `/etc/hadoop/conf/`
    .../configs/hadoop/
    Alle Dateien in `/etc/hive/conf/` .../configs/hive/
    Alle Dateien in
    `/etc/hive-hcatalog/conf/`
    .../configs/hive-hcatalog/
    Alle Dateien in `/etc/knox/conf/` .../configs/knox/
    Alle Dateien in `/etc/pig/conf/` .../configs/pig/
    Alle Dateien in
    `/etc/presto/conf/`
    .../configs/presto/
    Alle Dateien in
    `/etc/spark/conf/`
    .../configs/spark/
    Alle Dateien in „/etc/tez/conf/“ .../configs/tez/
    Alle Dateien in
    `/etc/zookeeper/conf/`
    .../configs/zookeeper/

Prüfpunkt-Diagnosedaten aktivieren und freigeben

Wenn Sie einen Cluster erstellen, können Sie die diagnostischen Daten für Cluster-Checkpoints aktivieren und für den Google Cloud -Support freigeben:

Erhebung von Prüfpunktdaten aktivieren

Fügen Sie beim Erstellen eines Dataproc-Clusters die Cluster-Eigenschaft dataproc:diagnostic.capture.enabled=true hinzu, um die Erfassung von Checkpoint-Diagnosedaten im Cluster zu aktivieren.

Checkpoint-Daten teilen

Wenn Sie einheitlichen Zugriff auf Bucket-Ebene für den temporären Bucket des Clusters aktivieren, werden alle Inhalte des temporären Buckets, einschließlich der erfassten diagnostischen Daten für Checkpoints und sitzungsspezifischer Daten wie MapReduce-Jobverlaufsdateien, aggregierter YARN-Logs und Spark-Ereignislogs, für denGoogle Cloud -Support freigegeben.

Wenn die Zugriffssteuerung auf Objektebene für den temporären Bucket des Clusters aktiviert ist, werden nur die erfassten Checkpoint-Diagnosedaten (Daten im Ordner „Checkpoint-Diagnosedaten“ in Cloud Storage) freigegeben.

Sie können die Freigabe von Prüfpunkt-Diagnosedaten für den Google Cloud -Support aktivieren, wenn Sie einen Cluster erstellen oder nach der Clustererstellung:

  • Freigabe beim Erstellen des Clusters aktivieren: Fügen Sie beim Erstellen eines Clusters die folgende Property hinzu:

    dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
    
  • Freigabe nach der Clustererstellung aktivieren: Sie können die Freigabe von Checkpoint-Daten für den Google Cloud -Support nach der Clustererstellung auf folgende Weise aktivieren:

    • Gewähren Sie dem Dienstkonto, das vom Google Cloud -Support verwendet wird, Lesezugriff auf die Prüfpunktdaten.

      • Wenn der einheitliche Zugriff auf Bucket-Ebene für den temporären Bucket aktiviert ist, fügen Sie eine IAM-Richtlinienbindung hinzu:

        gcloud storage buckets add-iam-policy-binding gs://TEMP_BUCKET \
            --member=serviceAccount:cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com \
            --role=roles/storage.objectViewer
        

      • Wenn die Zugriffssteuerung auf Objektebene für den temporären Bucket aktiviert ist, führen Sie den folgenden Befehl aus, um Checkpoint-Diagnosedaten freizugeben:

        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
        

Erfassung von Snapshot-Diagnosedaten

Sie können den folgenden gcloud dataproc clusters diagnose-Befehl ausführen, um einen Snapshot von Diagnosedaten aus einem laufenden Cluster zu erfassen. Die Daten werden als Archivdatei (TAR) in den Staging-Bucket von Dataproc in Cloud Storage geschrieben.

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

Hinweise:

  • CLUSTER_NAME: Der Name des Clusters, bei dem eine Diagnose durchgeführt werden soll.
  • REGION: Die Region des Clusters, z. B. us-central1.
  • --tarball-access=GOOGLE_DATAPROC_DIAGNOSE Mit diesem Flag kann Google Cloud Support auf die diagnostische TAR-Datei zugreifen. Geben Sie Google Cloud den Cloud Storage-Pfad der diagnostischen TAR-Datei an.

  • Additional flags:

    • --start-time mit --end-time: Mit beiden Flags geben Sie einen Zeitraum im Format %Y-%m-%dT%H:%M:%S.%fZ für die Erfassung von Diagnosedaten an. Wenn Sie einen Zeitraum angeben, können auch Dataproc-Autoscaling-Logs während des Zeitraums erfasst werden. Standardmäßig werden Dataproc-Autoscaling-Logs nicht in den Diagnosesnapshot-Daten erfasst.

    • Sie können eines oder beide der folgenden Flags verwenden, um bestimmte Job-Treiber-, Spark-Ereignis-, YARN-Anwendungs- und Sparklens-Ausgabelogs zu erfassen:

      • --job-ids: Eine durch Kommas getrennte Liste von Job-IDs.
      • --yarn-application-ids: Eine durch Kommas getrennte Liste von YARN-Anwendungs-IDs

        • Die YARN-Log-Aggregation muss aktiviert sein (yarn.log-aggregation-enable=true), damit YARN-Anwendungsprotokolle erfasst werden können.
        • Bei MapReduce-Jobs werden nur YARN-Anwendungsprotokolle erfasst.

Optional: Diagnoseskript ausführen

Der Befehl gcloud dataproc clusters diagnose kann fehlschlagen oder überschritten werden, wenn sich ein Cluster im Fehlerzustand befindet und keine Diagnoseaufgaben vom Dataproc-Server akzeptieren kann. Alternativ zum Ausführen des Diagnosebefehls können Sie SSH verwenden, um eine Verbindung zum Cluster herzustellen, und das Skript dann lokal auf dem Masterknoten ausführen.

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

Die Tar-Datei des Diagnosearchivs wird in einem lokalen Verzeichnis gespeichert. In der Befehlsausgabe wird der Speicherort der TAR-Datei mit einer Anleitung zum Hochladen der TAR-Datei in einen Cloud Storage-Bucket aufgeführt.

Diagnose-Snapshot-Daten

Cluster-Snapshot-Daten enthalten eine Diagnosesusammenfassung und mehrere Archivabschnitte.

Zusammenfassung der Diagnose:Die Archivdatei enthält summary.txt, die sich im Stammverzeichnis des Archivs befindet. Sie bietet einen Überblick über den Clusterstatus, einschließlich YARN-, HDFS-, Laufwerk- und Netzwerkstatus, und Warnungen, die Sie auf mögliche Probleme hinweisen.

Archivabschnitte:Die Archivdatei enthält die folgenden Informationen, die an die folgenden Speicherorte in der Archivdatei geschrieben werden.

  • Informationen zu Daemons und Diensten

    Ausgeführter Befehl Speicherort im Archiv
    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-Informationen

    Ausgeführter Befehl Speicherort im Archiv
    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-Systeminformationen

    Ausgeführter Befehl Speicherort im Archiv
    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

  • Logdateien

    Element enthalten Speicherort im Archiv
    Alle Logs in /var/log mit folgenden Präfixen im Dateinamen:
    cloud-sql-proxy
    dataproc
    druid
    gcdp
    google
    hadoop
    hdfs
    hive
    knox
    presto
    spark
    syslog
    yarn
    zookeeper
    Dateien werden im Archivordner logs mit dem Original-Dateinamen gespeichert.
    Start-Logs für jeden einzelnen Dataproc-Knoten (Master und Worker) im Cluster Dateien werden im Archivordner node_startup abgelegt, der separate Unterordner für jede Maschine im Cluster enthält.
    Component Gateway-Logs von journalctl -u google-dataproc-component-gateway /logs/google-dataproc-component-gateway.log

  • Konfigurationsdateien

    Enthaltene Elemente Speicherort im Archiv
    VM-Metadaten /conf/dataproc/metadata
    Umgebungsvariablen in /etc/environment /conf/dataproc/environment
    Dataproc-Attribute /conf/dataproc/dataproc.properties
    Alle Dateien in /etc/google-dataproc/ /conf/dataproc/
    Alle Dateien in /etc/hadoop/conf/ /conf/hadoop/
    Alle Dateien in /etc/hive/conf/ /conf/hive/
    Alle Dateien in /etc/hive-hcatalog/conf/ /conf/hive-hcatalog/
    Alle Dateien in /etc/knox/conf/ /conf/knox/
    Alle Dateien in /etc/pig/conf/ /conf/pig/
    Alle Dateien in /etc/presto/conf/ /conf/presto/
    Alle Dateien in /etc/spark/conf/ /conf/spark/
    Alle Dateien in /etc/tez/conf/ /conf/tez/
    Alle Dateien in /etc/zookeeper/conf/ /conf/zookeeper/

Archivdatei freigeben

Sie können die Archivdatei mit dem Google Cloud -Support oder mit Nutzern teilen, um Hilfe bei der Fehlerbehebung von Cluster- oder Jobproblemen zu erhalten.

So geben Sie die Archivdatei frei:

  • Kopieren Sie die Archivdatei aus Cloud Storage und geben Sie das heruntergeladene Archiv dann frei.
  • Ändern Sie die Berechtigungen im Archiv, um anderen Google Cloud Nutzern oder Projekten Zugriff auf die Datei zu gewähren.

    Beispiel: Mit dem folgenden Befehl werden Leseberechtigungen für das Archiv für Inhaber des Projekts test-project erteilt:

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