Dataproc-Cluster diagnostizieren

Die Überprüfung von Logs und Konfigurationsinformationen kann nützlich sein, um Fehler bei einem Cluster oder Job zu beheben. Da es jedoch sehr viele Logs und Konfigurationsdateien gibt, kann es sehr zeitaufwändig sein, jede Einzelne zu erfassen und zu untersuchen. Zur Lösung dieses Problems unterstützen Cloud Dataproc-Cluster einen speziellen diagnose-Befehl über das Cloud SDK. Mit diesem Befehl werden wichtige System-, Spark-, Hadoop- und Cloud Dataproc-Protokolle erfasst und archiviert. Anschließend wird das Archiv in das Cloud Storage-Bucket hochgeladen, das an Ihrem Cluster angehängt.

"diagnose"-Befehl verwenden

Sie können den Cloud SDK-Befehl diagnose für Ihre Cloud Dataproc-Cluster verwenden (siehe Dataproc und Cloud SDK).

Sobald das Cloud SDK installiert und konfiguriert ist, können Sie den Befehl gcloud dataproc clusters diagnose wie unten gezeigt auf Ihrem Cluster ausführen. Ersetzen Sie cluster-name durch den Namen Ihres Clusters und region durch die Region des Clusters, z. B. --region=us-central1.

gcloud dataproc clusters diagnose cluster-name \
    --region=region \
    ... other args ...

Der Befehl gibt den Namen und den Speicherort des Archivs an, in dem die Daten enthalten sind.

...
Saving archive to cloud
Copying file:///tmp/tmp.FgWEq3f2DJ/diagnostic.tar ...
Uploading   ...23db9-762e-4593-8a5a-f4abd75527e6/diagnostic.tar ...
Diagnostic results saved in:
gs://bucket-name/.../cluster-uuid/.../job-id/diagnostic.tar
    ...
In diesem Beispiel ist bucket-name der Cloud Storage-Bucket, der mit Ihrem Cluster verknüpft ist, cluster-uuid ist die eindeutige ID (UUID) Ihres Clusters und job-id ist die UUID, die zur Systemaufgabe gehört, die den Diagnosebefehl ausgeführt hat.

Beim Erstellen eines Cloud Dataproc-Clusters wird automatisch ein Cloud Storage-Bucket erstellt und mit dem Cluster verknüpft. Der "diagnose"-Befehl gibt die Archivdatei an diesen Bucket aus. Um den Namen des von Cloud Dataproc erstellten Bucket zu bestimmen, verwenden Sie den Cloud SDK-Befehl clusters describe. Der mit dem Cluster verknüpfte Bucket wird neben configurationBucket aufgeführt.

gcloud dataproc clusters describe cluster-name \
    --region=region \
...
  clusterName: cluster-name
  clusterUuid: daa40b3f-5ff5-4e89-9bf1-bcbfec6e0eac
  configuration:
  configurationBucket: dataproc-edc9d85f-...-us
  ...

Vom "diagnose"-Befehl erfasste Daten freigeben

Sie haben zwei Möglichkeiten zur Freigabe des vom diagnose-Befehl erstellten Archivs:

  1. Laden Sie die Datei aus Cloud Storage herunter und geben Sie das heruntergeladene Archiv anschließend frei.
  2. Ändern Sie die Berechtigungen im Archiv, um anderen Nutzern oder Projekten der Google Cloud Platform Zugriff auf die Datei zu gewähren.

Mit dem folgenden Befehl werden beispielsweise Leseberechtigungen zum Diagnosearchiv in einem test-project hinzugefügt:

gsutil -m acl ch -g test-project:R path-to-archive

In der Ausgabe des "diagnose"-Befehls enthaltene Elemente

Mit dem diagnose-Befehl werden die folgenden Konfigurationsdateien, Logs und Ausgaben des Clusters in einer Archivdatei gespeichert. Die Archivdatei wird im Cloud Storage-Bucket abgelegt, der mit dem Cloud Dataproc-Cluster verknüpft ist (wie oben beschrieben).

Informationen zu Daemons und Status

Ausgeführter Befehl Speicherort im Archiv
yarn node -list -all /system/yarn-nodes.log
hdfs dfsadmin -report -live -decommissioning /system/hdfs-nodes.log
service --status-all /system/service.log
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

Log-Dateien

Enthaltene Elemente Speicherort im Archiv
Alle Logs in /var/log mit folgenden Präfixen im Dateinamen:
gcs
google
gcdp
hadoop
hdfs
hive
spark
syslog
yarn
Dateien werden im Archivordner logs mit dem Original-Dateinamen gespeichert.
Start-Logs für jeden einzelnen Cloud 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.

Konfigurationsdateien

Enthaltene Elemente Speicherort im Archiv
Alle Dateien in /etc/hadoop/conf/ Dateien werden im Archivordner hadoop_conf mit dem Original-Dateinamen gespeichert.