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:
- 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
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/ |