Cluster-Diagnosedaten ansehen

„Diagnosedaten für Managed Service for Apache Spark-Cluster ansehen“

Sie können die folgenden Funktionen zur Erfassung von Diagnosedaten von Managed Service for Apache Spark nutzen, um Probleme mit Clustern und Jobs zu beheben:

  • Prüfpunkt-Diagnosedaten: Standardmäßig erfasst Managed Service for Apache Spark während des Clusterlebenszyklus Prüfpunkt-Diagnosedaten.
  • Snapshot-Diagnosedaten: Sie können bei Bedarf einen einmaligen Snapshot der Cluster-Diagnosedaten erfassen.

Erfassung von Checkpoint-Diagnosedaten

Standardmäßig erfasst Managed Service for Apache Spark Prüfpunkt-Diagnosedaten während der Clustererstellung, der Clusteraktualisierung und der Managed Service for Apache Spark-Jobvorgänge.

Speicherort für Prüfpunktdaten

Managed Service for Apache Spark speichert Prüfpunkt-Diagnosedaten 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 standardmäßige temporäre Cluster-Bucket hat eine TTL-Aufbewahrungsdauer von 90 Tagen. Die Daten werden am Ende der Aufbewahrungsdauer gelöscht. Sie können beim Erstellen eines Clusters Ihren eigenen temporären Cluster-Bucket mit einer anderen TTL-Dauer angeben.

Diagnosedaten für Prüfpunkte

  • Detaillierte Logs zu Clusterknoten: Managed Service for Apache Spark führt die folgenden Befehle aus, um YARN- und HDFS-Informationen zu erfassen und in die folgenden Speicherorte im Ordner für Prüfpunkt-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
    cp gs://STAGING_BUCKET/google-cloud-dataproc-metainfo/CLUSTER_UUID/nodes_exclude.xml .../nodes/timestamp/nodes_exclude.xml

  • Jobdetails: Managed Service for Apache Spark speichert MapReduce-Jobinformationen und Spark-Joblogs für Jobs, die die Managed Service for Apache Spark Jobs API verwenden. Diese Jobdaten werden für jeden eingereichten MapReduce- und Spark-Job erfasst.

    • 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: Managed Service for Apache Spark führt die folgenden Befehle aus, um Systeminformationen zu erfassen und an den folgenden Speicherorten im Ordner für Prüfpunkt-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: Managed Service for Apache Spark speichert die folgenden Konfigurationsdateien an den folgenden Speicherorten im Ordner für Diagnosedaten des Prüfpunkts in Cloud Storage.

    Enthaltene Elemente Speicherort im Diagnoseordner
    Managed Service for Apache Spark-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/

Diagnosedaten zu Prüfpunkten mit dem Support teilen

Sie können die Freigabe von Prüfpunkt-Diagnosedaten für den Google Cloud -Support auf folgende Weise aktivieren:

  • Freigabe bei der Clustererstellung aktivieren: Fügen Sie beim Erstellen eines Clusters das folgende optionale Clusterattribut hinzu:

    dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
    

    Mit diesem Attribut werden die erfassten Prüfpunkt-Diagnosedaten automatisch an den Google Cloud -Support weitergegeben, sodass Sie sie nach der Clustererstellung nicht jedes Mal manuell freigeben müssen.

  • Freigabe nach der Clustererstellung aktivieren: Sie können die Freigabe von Prüfpunktdaten für den Google Cloud -Support nach der Clustererstellung aktivieren, indem Sie dem Dienstkonto, das vom Google Cloud -Support verwendet wird, Lesezugriff auf Prüfpunktdaten gewähren. Gehen Sie dazu so vor:

    • 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. \
          --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 Prüfpunkt-Diagnosedaten freizugeben:

      gcloud storage objects update \
          gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID \
          --add-acl-grant=entity=user-cloud-diagnose@cloud-dataproc.,role=READER --recursive
      

Erhebung von Diagnosedaten für Prüfpunkte deaktivieren

Wenn Sie die Erfassung von Prüfpunkt-Diagnosedaten für einen Cluster deaktivieren möchten, legen Sie beim Erstellen des Clusters dataproc:diagnostic.capture.enabled=false fest.

Diagnosedatenerfassung für Snapshots

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 Managed Service for Apache Spark in Cloud Storage geschrieben.

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

Hinweise:

  • CLUSTER_NAME: Der Name des Clusters, der diagnostiziert werden soll.
  • REGION: Die Region des Clusters, z. B. us-central1.
  • --tarball-access=GOOGLE_DATAPROC_DIAGNOSE: Dieses Flag ermöglicht dem Google Cloud -Support den Zugriff auf die Tar-Diagnosedatei. Geben Sie dem Google Cloud -Support den Cloud Storage-Pfad der TAR-Diagnosedatei an.

    Alternativ zur Bereitstellung der TAR-Datei für den Support können Sie die Cluster-UUID, die Vorgangs-ID des Diagnosebefehls und den Cloud Storage-Speicherort des Clusterkonfigurations-Buckets angeben.

    Wenn Sie die Diagnose-TAR-Datei in ein bestimmtes Verzeichnis schreiben möchten, geben Sie dem Google Cloud -Support den vollständigen Cloud Storage-Pfad der TAR-Datei an, der vom Diagnosebefehl ausgegeben wird.

    Bucket-Zugriff und Umfang der freigegebenen Inhalte: Die Zugriffseinstellung für den Cloud Storage-Bucket, der die TAR-Diagnosedatei enthält, bestimmt den Umfang der Inhalte, die für den Google Cloud -Support freigegeben werden:

    • Einheitlicher Zugriff auf Bucket-Ebene: Wenn der einheitliche Zugriff auf Bucket-Ebene für den Managed Service for Apache Spark-Staging-Bucket oder, wenn ein TARBALL_DIR angegeben ist, für den Bucket, der den TARBALL_DIR enthält, aktiviert ist, werden alle Bucket-Inhalte mit dem Google Cloud -Support geteilt.

    • Zugriff auf Objektebene: Wenn der Zugriff auf Objektebene für den Managed Service for Apache Spark-Staging-Bucket aktiviert ist oder wenn ein TARBALL_DIR angegeben ist TARBALL_DIR, wird nur die Diagnose-TAR-Datei mit dem Google Cloud -Support geteilt.

  • TARBALL_DIR: Optional. Mit diesem Flag können Sie ein Cloud Storage-Verzeichnis angeben, in das die TAR-Diagnosedatei geschrieben wird. Wenn dieses Flag weggelassen wird, wird die TAR-Diagnosedatei in den Managed Service for Apache Spark-Staging-Bucket geschrieben.

  • Additional flags:

    • --start-time mit --end-time: Verwenden Sie beide Flags, um einen Zeitraum im Format %Y-%m-%dT%H:%M:%S.%fZ für die Erfassung von Diagnosedaten anzugeben. Wenn Sie einen Zeitraum angeben, werden auch die Autoscaling-Logs von Managed Service for Apache Spark während dieses Zeitraums erfasst. Standardmäßig werden die Autoscaling-Logs von Managed Service for Apache Spark nicht in den Diagnosesnapshot-Daten erfasst.

    • Sie können eines der beiden folgenden Flags verwenden, um bestimmte Ausgabelogs für Jobtreiber, Spark-Ereignisse, YARN-Anwendungen und Sparklens 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-Logaggregation muss aktiviert sein (yarn.log-aggregation-enable=true), damit YARN-Anwendungslogs erfasst werden können.
        • Für MapReduce-Jobs werden nur YARN-Anwendungslogs erfasst.

Optional: Diagnoseskript ausführen

Der Befehl gcloud dataproc clusters diagnose kann fehlschlagen oder ein Zeitlimit überschreiten, wenn sich ein Cluster in einem Fehlerstatus befindet und keine Diagnoseaufgaben vom Managed Service for Apache Spark-Server annehmen kann. Alternativ zum Ausführen des Diagnosebefehls können Sie SSH verwenden, um eine Verbindung zum Cluster herzustellen, und das Script 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 Diagnosezusammenfassung und mehrere Archivabschnitte.

Diagnosezusammenfassung: Die Archivdatei enthält summary.txt im Stammverzeichnis des Archivs. Sie bietet einen Überblick über den Clusterstatus, einschließlich YARN, HDFS, Laufwerk und Netzwerkstatus, und enthält Warnungen, die Sie auf potenzielle Probleme aufmerksam machen.

Archivabschnitte: Die Archivdatei enthält die folgenden Informationen, die in die folgenden Speicherorte 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

  • Protokolldateien

    Element enthalten Speicherort im Archiv
    Alle Logs in /var/log mit den 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.
    Managed Service for Apache Spark-Knotenstartlogs für jeden Knoten (Master und Worker) in Ihrem Cluster. Die Dateien werden im Archivordner node_startup abgelegt, der für jede Maschine im Cluster separate Unterordner 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
    Managed Service for Apache Spark-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 für den Google Cloud -Support oder für Nutzer freigeben, 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 frei.
  • Ändern Sie die Berechtigungen für das Archiv, um anderen Google Cloud -Nutzern oder -Projekten den Zugriff auf die Datei zu ermöglichen.

    Beispiel: Mit dem folgenden Befehl werden den Inhabern des Projekts test-project Leseberechtigungen für das Archiv gewährt:

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