Logs für Managed Service for Apache Spark

Job- und Clusterlogs für Managed Service for Apache Spark können in Cloud Logging angesehen, durchsucht, gefiltert, und in Cloud Logging archiviert werden.

Logging-Ebenen für Komponenten

Legen Sie beim Erstellen eines Clusters Logging-Ebenen für Spark-, Hadoop-, Flink- und andere Managed Service for Apache Spark-Komponenten mit komponentenbezogenen log4j-Clusterattributen wie hadoop-log4j fest. Clusterbasierte Logging-Ebenen für Komponenten gelten für Dienst-Daemons wie den YARN-Ressourcenmanager und für Jobs, die im Cluster ausgeführt werden.

Wenn log4j-Attribute für eine Komponente wie die Presto-Komponente nicht unterstützt werden, schreiben Sie eine Initialisierungsaktion mit der die Datei log4j.properties oder log4j2.properties der Komponente bearbeitet wird.

Jobspezifische Logging-Ebenen für Komponenten: Sie können auch beim Senden eines Jobs Logging-Ebenen für Komponenten festlegen. Diese Logging-Ebenen werden auf den Job angewendet und haben Vorrang vor den Logging-Ebenen, die beim Erstellen des Clusters festgelegt wurden. Weitere Informationen finden Sie unter Cluster- und Jobattribute .

Logging-Ebenen für Spark- und Hive-Komponentenversionen :

Die Spark 3.3.X- und Hive 3.X-Komponenten verwenden log4j2-Attribute, während frühere Versionen dieser Komponenten log4j-Attribute verwenden (siehe Apache Log4j2). Verwenden Sie das Präfix spark-log4j:, um Logging-Ebenen für Spark in einem Cluster festzulegen.

Logging-Ebenen für Job-Treiber

Managed Service for Apache Spark verwendet die Standard Logging-Ebene für Job-Treiberprogramme.INFO Sie können diese Einstellung für ein oder mehrere Pakete mit dem gcloud dataproc jobs submit --driver-log-levels Flag ändern.

Beispiel:

Legen Sie die Logging-Ebene DEBUG fest, wenn Sie einen Spark-Job senden, der Cloud Storage-Dateien liest.

gcloud dataproc jobs submit spark ...\
    --driver-log-levels org.apache.spark=DEBUG,com.google.cloud.hadoop.gcsio=DEBUG

Beispiel:

Legen Sie die Logger-Ebene root auf WARN und die Logger-Ebene com.example auf INFO fest.

gcloud dataproc jobs submit hadoop ...\
    --driver-log-levels root=WARN,com.example=INFO

Logging-Ebenen für Spark-Ausführer

So konfigurieren Sie Logging-Ebenen für Spark-Ausführer:

  1. Bereiten Sie eine log4j-Konfigurationsdatei vor und laden Sie sie in Cloud Storage hoch.

    an.

  2. Verweisen Sie beim Senden des Jobs auf Ihre Konfigurationsdatei.

    Beispiel:

    gcloud dataproc jobs submit spark ...\
        --file gs://my-bucket/path/spark-log4j.properties \
        --properties spark.executor.extraJavaOptions=-Dlog4j.configuration=file:spark-log4j.properties
    

Spark lädt die Cloud Storage-Attributdatei in das lokale Arbeitsverzeichnis des Jobs herunter, auf das in -Dlog4j.configuration als file:<name> verwiesen wird.

Managed Service for Apache Spark-Joblogs in Logging

Unter Jobausgabe und -logs für Managed Service for Apache Spark finden Sie Informationen zum Aktivieren von Job-Treiberlogs für Managed Service for Apache Spark in Logging.

Auf Joblogs in Logging zugreifen

Sie können mit dem Log-Explorer, dem Befehl gcloud logging oder der Logging API auf Joblogs für Managed Service for Apache Spark zugreifen.

Console

Job-Treiber und YARN-Containerlogs für Managed Service for Apache Spark werden unter der Ressource „Managed Service for Apache Spark-Job“ aufgelistet.

Beispiel: Job-Treiberlog nach dem Ausführen einer Log-Explorer-Abfrage mit den folgenden Auswahlen:

  • Ressource: Cloud Dataproc Job
  • Logname:dataproc.job.driver

Beispiel: YARN-Containerlog nach dem Ausführen einer Log-Explorer-Abfrage mit den folgenden Auswahlen:

  • Ressource: Cloud Dataproc Job
  • Logname:dataproc.job.yarn.container

gcloud

Sie können Joblogeinträge mit dem Befehl gcloud logging read lesen. Die Ressourcenargumente müssen in Anführungszeichen gesetzt werden („...”). Mit dem folgenden Befehl werden Clusterlabels verwendet, um die zurückgegebenen Logeinträge zu filtern.

gcloud logging read \
    "resource.type=cloud_dataproc_job \
    resource.labels.region=cluster-region \
    resource.labels.job_id=my-job-id"

Beispielausgabe (unvollständig):

jsonPayload:
  class: org.apache.hadoop.hdfs.StateChange
  filename: hadoop-hdfs-namenode-test-dataproc-resize-cluster-20190410-38an-m-0.log
  ,,,
logName: projects/project-id/logs/hadoop-hdfs-namenode
---
jsonPayload:
  class: SecurityLogger.org.apache.hadoop.security.authorize.ServiceAuthorizationManager
  filename: cluster-name-dataproc-resize-cluster-20190410-38an-m-0.log
  ...
logName: projects/google.com:hadoop-cloud-dev/logs/hadoop-hdfs-namenode

REST API

Sie können mit der Logging REST API Logeinträge auflisten (siehe entries.list).

Managed Service for Apache Spark-Clusterlogs in Logging

Managed Service for Apache Spark exportiert die folgenden Apache Hadoop-, Spark-, Hive-, ZooKeeper- und andere Managed Service for Apache Spark-Clusterlogs in Cloud Logging.

Logtyp Logname Beschreibung Hinweise
Master-Daemon-Logs hadoop-hdfs
hadoop-hdfs-namenode
hadoop-hdfs-secondarynamenode
hadoop-hdfs-zkfc
hadoop-yarn-resourcemanager
hadoop-yarn-timelineserver
hive-metastore
hive-server2
hadoop-mapred-historyserver
zookeeper
Journal-Knoten
HDFS-NameNode
Sekundärer HDFS-NameNode
Zookeeper-Failover-Controller
YARN-Ressourcenmanager
YARN-Timeline-Server
Hive-Metaspeicher
Hive-Server2
MapReduce-Jobverlaufsserver
Zookeeper-Server
Worker-Daemon-Logs hadoop-hdfs-datanode
hadoop-yarn-nodemanager
HDFS-DataNode
YARN-NodeManager
Systemprotokolle autoscaler
google.dataproc.agent
google.dataproc.startup
Autoscaler-Log für Managed Service for Apache Spark
Agent-Log für Managed Service for Apache Spark
Startskript-Log und Initialisierungsaktionslog für Managed Service for Apache Spark
Erweiterte (zusätzliche) Logs knox
gateway-audit
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
Alle Logs in Unterverzeichnissen von /var/log/, die mit Folgendem übereinstimmen:
knox (einschließlich gateway-audit.log)
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
Wenn Sie das Attribut dataproc:dataproc.logging.extended.enabled=false festlegen, wird die Erfassung erweiterter Logs im Cluster deaktiviert.
VM-Syslogs syslog
Syslogs von Master- und Worker-Knoten des Clusters
Wenn Sie das Attribut dataproc:dataproc.logging.syslog.enabled=false festlegen, wird die Erfassung von VM-Syslogs im Cluster deaktiviert.

Auf Clusterlogs in Cloud Logging zugreifen

Sie können mit dem Log-Explorer, dem Befehl gcloud logging oder der Logging API auf Clusterlogs für Managed Service for Apache Spark zugreifen.

Console

Wählen Sie die folgenden Abfrageoptionen aus, um Clusterlogs im Log-Explorer aufzurufen:

  • Ressource: Cloud Dataproc Cluster
  • Log name: log name

gcloud

Sie können Clusterlogeinträge mit dem Befehl gcloud logging read lesen. Die Ressourcenargumente müssen in Anführungszeichen gesetzt werden („...”). Mit dem folgenden Befehl werden Clusterlabels verwendet, um die zurückgegebenen Logeinträge zu filtern.

gcloud logging read <<'EOF'
    "resource.type=cloud_dataproc_cluster
    resource.labels.region=cluster-region
    resource.labels.cluster_name=cluster-name
    resource.labels.cluster_uuid=cluster-uuid"
EOF

Beispielausgabe (unvollständig):

jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-cluster-name-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager
---
jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-component-gateway-cluster-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager

REST API

Sie können mit der Logging REST API Logeinträge auflisten (siehe entries.list).

Berechtigungen

Zum Schreiben von Logs in Logging muss das VM-Dienstkonto für Managed Service for Apache Spark die logging.logWriter IAM-Rolle haben. Das Standarddienstkonto für Managed Service for Apache Spark hat diese Rolle. Wenn Sie ein benutzerdefiniertes Dienstkonto verwenden, müssen Sie dem Dienstkonto diese Rolle zuweisen.

Logs schützen

Standardmäßig werden Logs in Logging im Ruhezustand verschlüsselt. Sie können kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEKs) aktivieren, um die Logs zu verschlüsseln. Weitere Informationen zur CMEK-Unterstützung finden Sie unter Schlüssel verwalten, die Log-Router-Daten schützen und Schlüssel verwalten, die Logging-Speicherdaten schützen.

Nächste Schritte