Sie können die folgenden Funktionen zum Erfassen von Diagnosedaten für Managed Service for Apache Spark nutzen, um Probleme mit Clustern und Jobs zu beheben:
- Checkpoint-Diagnosedaten: Standardmäßig werden während des Clusterlebenszyklus Checkpoint-Diagnosedaten von Managed Service for Apache Spark erfasst.
- Snapshot-Diagnosedaten: Bei Bedarf können Sie einen einmaligen Snapshot von Cluster-Diagnosedaten erfassen.
Erfassung von Diagnosedaten für Checkpoints
Standardmäßig werden im Managed Service for Apache Spark Diagnosedaten für Prüfpunkte während der Clustererstellung, der Clusteraktualisierung und der Managed Service for Apache Spark-Job-Vorgänge erfasst.
Speicherort der Prüfpunktdaten
Managed Service for Apache Spark speichert Checkpoint-Diagnosedaten im temporären Bucket des Clusters in Cloud Storage im folgenden Ordner (checkpoint diagnostic data folder):
gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID
Der temporäre Standard-Cluster-Bucket hat eine TTL-Aufbewahrungsdauer von 90 Tagen. Die Daten werden am Ende der Aufbewahrungsdauer gelöscht. Beim Erstellen eines Clusters können Sie einen eigenen temporären Cluster-Bucket mit einem anderen TTL-Zeitraum angeben.
Fehlerberichte zu Prüfpunkten
Clusterknoten-Detailprotokolle:Managed Service for Apache Spark führt die folgenden Befehle aus, um YARN- und HDFS-Informationen an die folgenden Speicherorte im Ordner mit den Checkpoint-Diagnosedaten in Cloud Storage zu schreiben.
Ausgeführter Befehl Speicherort im Diagnoseordner yarn node -list -all.../nodes/timestamp/yarn-nodes.loghdfs dfsadmin -report -live -decommissioning.../nodes/timestamp/hdfs-nodes.logcp gs://STAGING_BUCKET/google-cloud-dataproc-metainfo/CLUSTER_UUID/nodes_exclude.xml.../nodes/timestamp/nodes_exclude.xmlJobdetails:Managed Service for Apache Spark speichert MapReduce-Jobinformationen und Spark-Joblogs für Jobs, die die Managed Service for Apache Spark Jobs API verwenden. Diese Jobdaten werden für jeden eingereichten MapReduce- und Spark-Job erhoben.
- MapReduce
job.xml: Eine Datei mit Jobkonfigurationseinstellungen, die unter.../jobs/JOB_UUID/mapreduce/job.xmlgespeichert ist. - Spark-Ereignisprotokolle: Details zur Jobausführung, die für das Debugging nützlich sind, gespeichert unter
.../jobs/JOB_UUID/spark/application-id.
- MapReduce
Linux-Systeminformationen:Managed Service for Apache Spark führt die folgenden Befehle aus, um Systeminformationen zu erfassen und an den folgenden Speicherorten im Ordner mit den Checkpoint-Diagnosedaten in Cloud Storage zu speichern.
Befehl Speicherort im Diagnoseordner sysctl -a.../system/sysctl.logcat /proc/sys/fs/file-nr.../system/fs-file-nr.logping -c 1.../system/cluster-ping.logcp /etc/hosts.../system/hosts_entries.logcp /etc/resolv.conf.../system/resolv.confKonfigurationsdateien:Managed Service for Apache Spark speichert die folgenden Konfigurationsdateien an den folgenden Speicherorten im Ordner mit den Checkpoint-Diagnosedaten in Cloud Storage.
Enthaltene Elemente Speicherort im Diagnoseordner Managed Service for Apache Spark-Eigenschaften .../configs/dataproc/dataproc.propertiesAlle 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/
Diagnosedaten für Prüfpunkte mit dem Support teilen
Sie haben folgende Möglichkeiten, die Freigabe von Checkpoint-Diagnosedaten für den Google Cloud Support zu aktivieren:
Freigabe beim Erstellen des Clusters aktivieren: Fügen Sie beim Erstellen eines Clusters das folgende optionale Clusterattribut hinzu:
dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
Über diese Property werden automatisch erfasste Checkpoint-Diagnosedaten mit dem Google Cloud -Support geteilt, sodass Sie sie nicht jedes Mal nach der Clustererstellung manuell freigeben müssen.
Freigabe nach der Clustererstellung aktivieren: Sie können die Freigabe von Prüfpunktdaten für den Google Cloud -Support nach der Clustererstellung aktivieren, indem Sie dem vom Google Cloud -Support verwendeten Dienstkonto Lesezugriff auf Prüfpunktdaten gewähren:
Wenn der einheitliche Zugriff auf Bucket-Ebene für den temporären Bucket aktiviert ist, fügen Sie eine IAM-Richtlinienbindung hinzu:
gcloud storage buckets add-iam-policy-binding gs://TEMP_BUCKET \ --member=serviceAccount:cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com \ --role=roles/storage.objectViewer
Wenn die Zugriffssteuerung auf Objektebene für den temporären Bucket aktiviert ist, führen Sie den folgenden Befehl aus, um Checkpoint-Diagnosedaten freizugeben:
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
Erhebung von Diagnosedaten für Prüfpunkte deaktivieren
Wenn Sie die Erfassung von Checkpoint-Diagnosedaten für einen Cluster deaktivieren möchten, legen Sie beim Erstellen des Clusters dataproc:diagnostic.capture.enabled=false fest.
Erfassung von Snapshot-Diagnosedaten
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 Managed Service for Apache Spark in Cloud Storage geschrieben.
gcloud dataproc clusters diagnose CLUSTER_NAME \ --region=REGION \ --tarball-access=GOOGLE_DATAPROC_DIAGNOSE \ --tarball-gcs-dir=TARBALL_DIR
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_DIAGNOSEDieses Flag bietet Zugriff auf die diagnostische TAR-Datei für den Google Cloud Support. Geben Sie Google Cloud den Cloud Storage-Pfad der diagnostischen TAR-Datei an.Alternativ zur Bereitstellung der TAR-Datei für den Support können Sie die Cluster-UUID, die Vorgangs-ID des Diagnosebefehls und den Cloud Storage-Speicherort des Clusterkonfigurations-Buckets angeben.
Wenn Sie die diagnostische TAR-Datei in ein bestimmtes Verzeichnis schreiben möchten, geben Sie Google Cloud support den vollständigen Cloud Storage-Pfad der TAR-Datei an, der vom Diagnosebefehl ausgegeben wird.
Bucket-Zugriff und Umfang der freigegebenen Inhalte: Die Zugriffseinstellung für den Cloud Storage-Bucket, der die diagnostische TAR-Datei enthält, bestimmt den Umfang der Inhalte, die für den Google Cloud Support freigegeben werden:
Einheitlicher Zugriff auf Bucket-Ebene: Wenn der einheitliche Zugriff auf Bucket-Ebene für den Staging-Bucket des Managed Service for Apache Spark oder, falls ein TARBALL_DIR angegeben ist, für den Bucket, der das TARBALL_DIR enthält, aktiviert ist, werden alle Bucket-Inhalte für den Google Cloud -Support freigegeben.
Zugriff auf Objektebene: Wenn der Zugriff auf Objektebene für den Staging-Bucket von Managed Service for Apache Spark aktiviert ist oder wenn ein TARBALL_DIR angegeben ist, für den Bucket, der das TARBALL_DIR enthält, wird nur die diagnostische TAR-Datei für den Google Cloud -Support freigegeben.
TARBALL_DIR: Optional. Mit diesem Flag können Sie ein Cloud Storage-Verzeichnis angeben, in das die diagnostische TAR-Datei geschrieben wird. Wenn dieses Flag weggelassen wird, wird die diagnostische TAR-Datei in den Staging-Bucket für den verwalteten Dienst für Apache Spark geschrieben.
Additional flags:
--start-timemit--end-time: Mit beiden Flags geben Sie einen Zeitraum im Format%Y-%m-%dT%H:%M:%S.%fZfür die Erfassung von Diagnosedaten an. Wenn Sie einen Zeitraum angeben, können auch die Autoscaling-Logs von Managed Service for Apache Spark für diesen Zeitraum erfasst werden. Standardmäßig werden die Autoscaling-Logs von Managed Service for Apache Spark 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 (
Optional: 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 Managed Service for Apache Spark-Server akzeptieren kann. Alternativ zum Ausführen des Diagnosebefehls können Sie SSH verwenden, um eine Verbindung zum Cluster herzustellen, und das Skript dann lokal auf dem Masterknoten ausführen.
gcloud compute ssh HOSTNAMEgcloud 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 Ausgabe des Befehls 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, das sich im Stammverzeichnis des Archivs befindet. Sie bietet eine Übersicht über den Clusterstatus, einschließlich YARN-, HDFS-, Laufwerk- und Netzwerkstatus, und 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.loghdfs dfsadmin -report -live -decommissioning/system/hdfs-nodes.loghdfs dfs -du -h/system/hdfs-du.logservice --status-all/system/service.logsystemctl --type service/system/systemd-services.logcurl "http://${HOSTNAME}:8088/jmx"/metrics/resource_manager_jmxcurl "http://${HOSTNAME}:8088/ws/v1/cluster/apps"/metrics/yarn_app_infocurl "http://${HOSTNAME}:8088/ws/v1/cluster/nodes"/metrics/yarn_node_infocurl "http://${HOSTNAME}:9870/jmx"/metrics/namenode_jmxJVM-Informationen
Ausgeführter Befehl Speicherort im Archiv jstack -l "${DATAPROC_AGENTPID}"jstack/agent${DATAPROC_AGENT_PID}.jstackjstack -l "${PRESTOPID}"jstack/agent${PRESTO_PID}.jstackjstack -l "${JOB_DRIVERPID}"jstack/driver${JOB_DRIVER_PID}.jstackjinfo "${DATAPROC_AGENTPID}"jinfo/agent${DATAPROC_AGENT_PID}.jstackjinfo "${PRESTOPID}"jinfo/agent${PRESTO_PID}.jstackjinfo "${JOB_DRIVERPID}"jinfo/agent${JOB_DRIVER_PID}.jstackLinux-Systeminformationen
Ausgeführter Befehl Speicherort im Archiv df -h/system/df.logps aux/system/ps.logfree -m/system/free.lognetstat -anp/system/netstat.logsysctl -a/system/sysctl.loguptime/system/uptime.logcat /proc/sys/fs/file-nr/system/fs-file-nr.logping -c 1/system/cluster-ping.logElement enthalten Speicherort im Archiv Alle Logs in /var/logmit folgenden Präfixen im Dateinamen:
cloud-sql-proxy
dataproc
druid
gcdp
google
hadoop
hdfs
hive
knox
presto
spark
syslog
yarn
zookeeperDateien werden im Archivordner logsmit dem Original-Dateinamen gespeichert.Start-Logs für jeden einzelnen Managed Service for Apache Spark-Knoten (Master und Worker) im Cluster Dateien werden im Archivordner node_startupabgelegt, 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.logKonfigurationsdateien
Enthaltene Elemente Speicherort im Archiv VM-Metadaten /conf/dataproc/metadataUmgebungsvariablen in /etc/environment/conf/dataproc/environmentManaged Service for Apache Spark-Eigenschaften /conf/dataproc/dataproc.propertiesAlle 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 für Nutzer freigeben, 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-projecterteilt:gcloud storage objects update PATH_TO_ARCHIVE --add-acl-grant=entity=project-owners-test-project,role=READER