Dataproc erfasst die folgenden Clusterdiagnosedaten, um Ihnen bei der Fehlerbehebung bei Cluster- und Jobproblemen zu helfen:
- Checkpoint-Daten: Wenn diese Option aktiviert ist, werden während des gesamten Lebenszyklus eines Clusters Diagnosedaten erhoben und aktualisiert.
- Snapshot-Daten: Sie können einen Snapshot von Clusterdiagnosedaten aus einem laufenden Cluster erfassen.
Prüfpunkt-Daten
Wenn die Funktion für Prüfpunktdaten aktiviert ist, werden von Dataproc Diagnosedaten während der Clustererstellung, der Clusteraktualisierung und der Dataproc Jobs API-Vorgänge erfasst. Dataproc speichert die Daten im Cluster temp bucket
in Cloud Storage, wo sie 90 Tage lang aufbewahrt werden. Die Daten werden am Ende der Aufbewahrungsdauer gelöscht.
Attribute zum Aktivieren der Datenerfassung: Sie können die folgenden optionalen Clusterattribute einfügen, wenn Sie einen Cluster erstellen. Sie wirken sich nur auf die Erhebung von Checkpoint-Diagnosedaten im erstellten Cluster aus.
- Datenerhebung aktivieren:Wenn Sie die Eigenschaft
dataproc:diagnostic.capture.enabled=true
festlegen, wird die Erhebung von Checkpoint-Diagnosedaten im Cluster aktiviert. - Diagnosedaten freigeben:Wenn Sie die
dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
-Property festlegen, werden erfasste Checkpoint-Diagnosedaten für den Google Cloud Support freigegeben.- Nachdem Sie den Cluster erstellt haben, können Sie die Diagnosedaten für den Google Cloud Support freigeben, indem Sie dem vom Google Cloud Support verwendeten Dienstkonto Lesezugriff auf die Daten gewähren. Gehen Sie dazu so vor:
gcloud storage objects update \ gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID \ --add-acl-grant=entity=user-cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com,role=READER --recursive \
- Nachdem Sie den Cluster erstellt haben, können Sie die Diagnosedaten für den Google Cloud Support freigeben, indem Sie dem vom Google Cloud Support verwendeten Dienstkonto Lesezugriff auf die Daten gewähren. Gehen Sie dazu so vor:
Diagnosedaten
Die Diagnosedaten bestehen aus den folgenden Daten, die in Cloud Storage in gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID/
geschrieben werden. Dieser Speicherort wird in diesem Abschnitt als Ordner für Diagnosedaten bezeichnet.
Clusterknoten-Detailprotokolle:Dataproc führt die folgenden Befehle aus, um YARN- und HDFS-Informationen zu erfassen und an die folgenden Speicherorte im Ordner mit Diagnosedaten in Cloud Storage zu schreiben.
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 Informationen zu MapReduce-Jobs und Spark-Joblogs für Jobs, die die Dataproc Jobs API verwenden. Diese Jobdaten werden für jeden eingereichten MapReduce- 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, gespeichert unter
.../jobs/JOB_UUID/spark/application-id
.
- MapReduce
Linux-Systeminformationen:Dataproc führt die folgenden Befehle aus, um Systeminformationen zu erfassen und an den folgenden Speicherorten im Diagnoseordner in Cloud Storage zu speichern.
Befehl Speicherort im Diagnoseordner 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 Diagnoseordner 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 gcloud dataproc clusters diagnose
-Befehl ausführen, um einen Snapshot von Diagnosedaten aus einem laufenden Cluster zu erfassen. Die Daten werden als Archivdatei (TAR) 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 Clusters, bei dem eine Diagnose durchgeführt werden soll.
- REGION: Die Region des Clusters, z. B.
us-central1
. --tarball-access
=GOOGLE_DATAPROC_DIAGNOSE
Mit diesem Flag kann Google Cloud support auf die diagnostische TAR-Datei zugreifen. Geben Sie Google Cloud den Cloud Storage-Pfad der diagnostischen TAR-Datei an.Additional flags:
--start-time
mit--end-time
: Mit beiden Flags geben Sie einen Zeitraum im Format%Y-%m-%dT%H:%M:%S.%fZ
für die Erfassung von Diagnosedaten an. Wenn Sie einen Zeitraum angeben, können auch Dataproc-Autoscaling-Logs während des Zeitraums erfasst werden. Standardmäßig werden Dataproc-Autoscaling-Logs nicht in den Diagnosesnapshot-Daten erfasst.Sie können eines oder beide der folgenden Flags verwenden, um bestimmte Job-Treiber-, Spark-Ereignis-, YARN-Anwendungs- und Sparklens-Ausgabelogs zu erfassen:
--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 sein (
yarn.log-aggregation-enable=true
), damit YARN-Anwendungsprotokolle erfasst werden können. - Bei MapReduce-Jobs werden nur YARN-Anwendungsprotokolle erfasst.
- Die YARN-Log-Aggregation muss aktiviert sein (
Bei Bedarf Diagnoseskript ausführen
Der Befehl gcloud dataproc clusters diagnose
kann fehlschlagen oder überschritten werden, wenn sich ein Cluster im Fehlerzustand befindet und keine Diagnoseaufgaben vom Dataproc-Server akzeptieren kann. Alternativ zum Ausführen des Diagnosebefehls können Sie SSH verwenden, um eine Verbindung zum Masterknoten des Clusters herzustellen, das Diagnoseskript herunterzuladen und es dann lokal auf dem Masterknoten auszuführen.
gcloud compute ssh HOSTNAME
gcloud storage 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.
Diagnose-Snapshot-Daten
Cluster-Snapshot-Daten enthalten eine Diagnosesusammenfassung und mehrere Archivabschnitte.
Zusammenfassung der Diagnose:Die Archivdatei enthält summary.txt
, die 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 in 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
Element 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 mit dem Google Cloud -Support oder mit Nutzern teilen, um Hilfe bei der Fehlerbehebung 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 dann 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 für das Archiv für Inhaber des Projekts
test-project
erteilt:gcloud storage objects update PATH_TO_ARCHIVE} --add-acl-grant=entity=project-owners-test-project,role=READER