Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Dataproc-Cluster diagnostizieren

Log- und Konfigurationsinformationen können für die Fehlerbehebung bei Clustern oder Jobs hilfreich sein. Da es jedoch sehr viele Logs und Konfigurationsdateien gibt, kann es sehr zeitaufwändig sein, jede Datei zu untersuchen. Dataproc-Cluster unterstützen einen speziellen diagnose-Befehl über das Cloud SDK, um dieses Problem zu beheben. Mit diesem Befehl werden wichtige System-, Spark-, Hadoop- und Dataproc-Logs erfasst und archiviert. Anschließend wird das Archiv in den Cloud Storage-Bucket hochgeladen, der an Ihrem Cluster angehängt ist.

Cloud SDK-Diagnosebefehl verwenden

Sie können den Cloud SDK-Befehl diagnose in Ihren Dataproc-Clustern 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 mit Ihrem Cluster verknüpfte Cloud Storage-Bucket, cluster-uuid die eindeutige ID (UUID) des Clusters und job-id die UUID, die zum Systemaufgabe, die den Diagnosebefehl ausgeführt hat.

Wenn Sie einen Dataproc-Cluster erstellen, erstellt Dataproc einen Cloud Storage-Bucket und hängt ihn an Ihren Cluster an. Der Diagnosebefehl gibt die Archivdatei an diesen Bucket aus. Verwenden Sie den Cloud SDK-Befehl clusters describe, um den Namen des von Dataproc erstellten Buckets zu ermitteln. 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
  ...

Diagnoseskript vom Masterknoten ausführen (optional)

Der Diagnosebefehl des Cloud SDK kann fehlschlagen oder zu einer Zeitüberschreitung führen, wenn sich ein Cluster in einem Fehlerzustand befindet und keine Diagnoseaufgaben vom Dataproc-Server akzeptieren kann. Zur Vermeidung dieses Problems können Sie eine SSH-Verbindung zum Masterknoten herstellen, das Diagnoseskript herunterladen und das Skript lokal auf dem Masterknoten ausführen:

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

Das Diagnose-Tarball wird in einem lokalen temporären Verzeichnis gespeichert. Wenn Sie möchten, können Sie der Anleitung in der Befehlsausgabe folgen, um sie in einen Cloud Storage-Bucket hochzuladen und an den Google-Support zu senden.

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

Der Befehl diagnose enthält die folgenden Konfigurationsdateien, Logs und Ausgaben von Ihrem Cluster in einer Archivdatei. Die Archivdatei wird im Cloud Storage-Bucket abgelegt, der mit Ihrem Dataproc-Cluster verknüpft ist.

Informationen zu Daemons und Dienstleistungen

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_AGENT_PID}" jstack/agent_${DATAPROC_AGENT_PID}.jstack
jstack -l "${PRESTO_PID}" jstack/agent_${PRESTO_PID}.jstack
jstack -l "${JOB_DRIVER_PID}" jstack/driver_${JOB_DRIVER_PID}.jstack
jinfo "${DATAPROC_AGENT_PID}" jinfo/agent_${DATAPROC_AGENT_PID}.jstack
jinfo "${PRESTO_PID}" jinfo/agent_${PRESTO_PID}.jstack
jinfo "${JOB_DRIVER_PID}" 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

Enthaltene Elemente Speicherort im Archiv
Alle Logs in /var/log mit folgenden Präfixen im Dateinamen:
cloud-sql-proxy
dataproc
druid
gcdp
gcs
google
hadoop
hdfs
hive
knox
presto
spark
syslog
yarn
zookeeper
Dateien werden im Archivordner logs mit dem Original-Dateinamen gespeichert.
Startlogs für Dataproc-Knoten für jeden Knoten (Master und Worker) in Ihrem 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/