Dataproc erfasst die folgenden Clusterdiagnosedaten, um Ihnen bei der Fehlerbehebung bei Cluster- und Jobproblemen zu helfen:
- Checkpunktdaten: Wenn diese Option aktiviert ist, erhebt und aktualisiert Dataproc während des gesamten Lebenszyklus eines Clusters Diagnosedaten.
- Snapshot-Daten: Sie können einen Snapshot von Clusterdiagnosedaten von einem laufenden Cluster erfassen.
Prüfpunktdaten
Wenn die Funktion für Checkpoint-Daten aktiviert ist, erhebt Dataproc Diagnosedaten beim Erstellen, Aktualisieren und Ausführen von Dataproc Jobs API-Vorgängen. Dataproc speichert die Daten im Cluster temp bucket
in Cloud Storage mit einer TTL-Aufbewahrungsdauer von 90 Tagen. Die Daten werden am Ende der Aufbewahrungsdauer gelöscht.
Eigenschaften für die Datenerhebung aktivieren: Sie können die folgenden optionalen Clustereigenschaften beim Erstellen eines Clusters angeben. Sie wirken sich nur auf die Erfassung von Checkpoint-Diagnosedaten auf dem erstellten Cluster aus.
- Datenerhebung aktivieren:Wenn Sie das Attribut
dataproc:diagnostic.capture.enabled=true
festlegen, werden Checkpoint-Diagnosedaten im Cluster erfasst. - Diagnosedaten teilen:Wenn Sie die
dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
-Property so konfigurieren, werden erfasste Checkpoint-Diagnosedaten mit dem Google Cloud Support geteilt.- Nachdem Sie den Cluster erstellt haben, können Sie die Diagnosedaten für den Google Cloud -Support freigeben. Dazu müssen Sie dem vom Google Cloud -Support verwendeten Dienstkonto Lesezugriff auf die Daten gewähren. Gehen Sie dazu so vor: Google Cloud
gsutil -m acl ch -r -u \ cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com:R \ gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID
- Nachdem Sie den Cluster erstellt haben, können Sie die Diagnosedaten für den Google Cloud -Support freigeben. Dazu müssen Sie dem vom Google Cloud -Support verwendeten Dienstkonto Lesezugriff auf die Daten gewähren. Gehen Sie dazu so vor: Google Cloud
Diagnosedaten
Die Diagnosedaten bestehen aus den folgenden Daten, die in Cloud Storage in gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID/
geschrieben wurden. Dieser Speicherort wird in diesem Abschnitt als Ordner für Diagnosedaten bezeichnet.
Detailprotokolle für Clusterknoten:Dataproc führt die folgenden Befehle aus, um YARN- und HDFS-Informationen an den folgenden Speicherorten im Ordner für Diagnosedaten in Cloud Storage zu erfassen und zu speichern.
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
Jobdetails:Dataproc speichert MapReduce-Jobinformationen und Spark-Jobprotokolle für Jobs, die mit der Dataproc Jobs API erstellt wurden. Diese Jobdaten werden für jeden gesendeten MR- 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, werden unter
.../jobs/JOB_UUID/spark/application-id
gespeichert.
- MapReduce
Linux-Systeminformationen:Dataproc führt die folgenden Befehle aus, um Systeminformationen an den folgenden Speicherorten im Ordner „diagnostic data“ in Cloud Storage zu erfassen und zu speichern.
Befehl Speicherort im Ordner „Diagnose“ 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:Dataproc speichert die folgenden Konfigurationsdateien an den folgenden Speicherorten im Ordner für Diagnosedaten in Cloud Storage.
Enthaltene Elemente Speicherort im Ordner „Diagnose“ Dataproc-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/
Snapshot-Daten
Sie können den folgenden Befehl gcloud dataproc clusters diagnose
ausführen, um einen Snapshot von Diagnosedaten aus einem laufenden Cluster zu erfassen. Die Daten werden als Archivdatei (Tar-Datei) in den Staging-Bucket von Dataproc in Cloud Storage geschrieben.
gcloud dataproc clusters diagnose CLUSTER_NAME \ --region=REGION \ --tarball-access=GOOGLE_DATAPROC_DIAGNOSE
Hinweise:
- CLUSTER_NAME: Der Name des zu diagnostizierenden Clusters.
- REGION: Die Region des Clusters, z. B.
us-central1
. OPTIONAL FLAGS:
Sie können eines oder beide der folgenden Flags verwenden, um Protokolle für bestimmte Job-Treiber, Spark-Ereignisse, YARN-Anwendungen und Sparklens-Ausgaben zu erfassen. Hinweise:
- Die YARN-Log-Aggregation muss aktiviert (
yarn.log-aggregation-enable=true
) sein, damit YARN-Anwendungslogs erfasst werden können. Bei MapReduce-Jobs werden nur YARN-Anwendungsprotokolle erfasst.
--job-ids
: Eine durch Kommas getrennte Liste von Job-IDs.--yarn-application-ids
: Eine durch Kommas getrennte Liste von YARN-Anwendungs-IDs.
- Die YARN-Log-Aggregation muss aktiviert (
--start-time
mit--end-time
: Verwenden Sie beide Flags, um einen Zeitraum im%Y-%m-%dT%H:%M:%S.%fZ
-Format für die Erfassung von Diagnosedaten anzugeben. Wenn Sie einen Zeitraum angeben, werden auch Dataproc-Autoscaling-Protokolle in diesem Zeitraum erfasst. Standardmäßig werden Dataproc-Autoscaling-Protokolle nicht in den Daten des Diagnose-Snapshots erfasst.--tarball-access
=GOOGLE_DATAPROC_DIAGNOSE
Mit diesem Flag können Sie die Diagnose-Tar-Datei an den Google Cloud -Support senden oder ihm Zugriff darauf gewähren. Gib dem Google Cloud -Support außerdem folgende Informationen:- Cloud Storage-Pfad der Diagnose-Tar-Datei oder
- Bucket für die Clusterkonfiguration, Cluster-UUID und Vorgangs-ID des Diagnosebefehls
Führen Sie bei Bedarf das Diagnoseskript aus.
Der Befehl gcloud dataproc clusters diagnose
kann fehlschlagen oder überschritten werden, wenn sich ein Cluster im Fehlerzustand befindet, und er kann keine Diagnoseaufgaben vom Dataproc-Server akzeptieren. Alternativ zum Ausführen des Befehls „diagnose“ können Sie SSH verwenden, um eine Verbindung zum Clustermasterknoten herzustellen, das Diagnoseskript herunterzuladen und dann lokal auf dem Masterknoten auszuführen.
gcloud compute ssh HOSTNAME
gsutil 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.
Daten zu Diagnose-Snapshots
Cluster-Snapshot-Daten enthalten eine Diagnoseübersicht und mehrere Archivabschnitte.
Fehlerbehebungsübersicht:Die Archivdatei enthält summary.txt
, das sich im Stammverzeichnis des Archivs befindet. Sie bietet einen Überblick über den Clusterstatus, einschließlich YARN, HDFS, Laufwerk und Netzwerkstatus, und enthält Warnungen, die Sie auf mögliche Probleme hinweisen.
Archivabschnitte:Die Archivdatei enthält die folgenden Informationen, die an 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
Artikel enthalten Speicherort im Archiv Alle Logs in /var/log
mit 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.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/
Archivdatei freigeben
Sie können die Archivdatei für den Google Cloud Support oder Nutzer freigeben, um Hilfe bei der Behebung 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 im Archiv, um anderen Google Cloud Nutzern oder Projekten Zugriff auf die Datei zu gewähren.
Beispiel: Mit dem folgenden Befehl werden Leseberechtigungen zum Archiv in einem
test-project
hinzugefügt:gsutil -m acl ch -g test-project:R PATH_TO_ARCHIVE}