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 Dataproc-Cluster einen speziellen diagnose
-Befehl über die Google Cloud-Befehlszeile. Mit diesem Befehl werden wichtige System-, Spark-, Hadoop- und Dataproc-Protokolle erfasst und archiviert. Anschließend wird das Archiv in das Cloud Storage-Bucket hochgeladen, das an Ihrem Cluster angehängt.
Diagnosebefehl der Google Cloud-Befehlszeile verwenden
Sie können den diagnose
-Befehl der Google Cloud-Befehlszeile für Ihre Dataproc-Cluster verwenden (siehe Dataproc- und Google Cloud-Befehlszeile).
Sobald die gcloud
-Befehlszeile installiert und konfiguriert ist, können Sie den Befehl gcloud dataproc clusters diagnose
auf Ihrem Cluster ausführen, wie unten gezeigt. Ersetzen Sie cluster-name durch den Namen des 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 Cloud Storage-Speicherort der Archivdatei aus, die die Daten enthält (siehe In der Befehlsbefehlsausgabe enthaltene Elemente). Informationen zum Zugriff und Kopieren der Archivdatei finden Sie unter Durch Diagnose ermittelte Daten freigeben.
Diagnoseskript vom Masterknoten ausführen (optional)
Der Diagnosebefehl der Google Cloud-Befehlszeile kann fehlschlagen oder das Zeitlimit überschreiten, wenn sich ein Cluster im Fehlerstatus befindet und keine Diagnoseaufgaben vom Dataproc-Server akzeptieren kann. Um dieses Problem zu vermeiden, können Sie eine SSH-Verbindung zum Masterknoten herstellen, das Diagnoseskript herunterladen und dann 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
Der 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 den Google-Support zu teilen.
Vom "diagnose"-Befehl erfasste Daten freigeben
Sie haben zwei Möglichkeiten zur Freigabe des vom diagnose
-Befehl erstellten Archivs:
- Laden Sie die Datei aus Cloud Storage herunter und geben Sie das heruntergeladene Archiv anschließend frei.
- Ä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 Dataproc-Cluster verknüpft ist (wie oben beschrieben).
Zusammenfassung der Diagnose
Das Diagnoseskript analysiert automatisch gesammelte Daten und generiert ein summary.txt
im Stammverzeichnis des Diagnose-Tarballs. Die Zusammenfassung bietet eine allgemeine Übersicht über den Clusterstatus, einschließlich YARN, HDFS, Laufwerk, Netzwerk usw. und Warnungen, die Sie auf mögliche Probleme hinweisen.
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. |
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/ |