Log di Managed Service per Apache Spark

I log dei job e dei cluster Managed Service for Apache Spark possono essere visualizzati, cercati, filtrati e archiviati in Cloud Logging.

Livelli di logging dei componenti

Imposta i livelli di logging di Spark, Hadoop, Flink e altri componenti di Managed Service for Apache Spark con le proprietà del cluster log4j specifiche del componente, ad esempio hadoop-log4j, quando crei un cluster. I livelli di logging dei componenti basati sul cluster si applicano ai daemon di servizio, come YARN ResourceManager, e ai job eseguiti sul cluster.

Se le proprietà log4j non sono supportate per un componente, ad esempio il componente Presto, scrivi un'azione di inizializzazione che modifichi il file log4j.properties o log4j2.properties del componente.

Livelli di logging dei componenti specifici del job: puoi anche impostare i livelli di logging dei componenti quando invii un job. Questi livelli di logging vengono applicati al job e hanno la precedenza sui livelli di logging impostati durante la creazione del cluster. Per saperne di più, consulta Proprietà del cluster e del job.

Livelli di logging della versione dei componenti Spark e Hive:

I componenti Spark 3.3.X e Hive 3.X utilizzano le proprietà log4j2, mentre le versioni precedenti di questi componenti utilizzano le proprietà log4j (vedi Apache Log4j2). Utilizza un prefisso spark-log4j: per impostare i livelli di logging di Spark su un cluster.

Livelli di logging del driver del job

Managed Service for Apache Spark utilizza un livello di logging predefinito di INFO per i programmi driver dei job. Puoi modificare questa impostazione per uno o più pacchetti con il flag gcloud dataproc jobs submit --driver-log-levels.

Esempio:

Imposta il livello di logging DEBUG quando invii un job Spark che legge i file Cloud Storage.

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

Esempio:

Imposta il livello del logger root su WARN e il livello del logger com.example su INFO.

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

Livelli di logging dell'esecutore Spark

Per configurare i livelli di logging dell'executor Spark:

  1. Prepara un file di configurazione log4j e caricalo su Cloud Storage

    .

  2. Fai riferimento al file di configurazione quando invii il job.

    Esempio:

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

Spark scarica il file delle proprietà di Cloud Storage nella directory di lavoro locale del job, a cui viene fatto riferimento come file:<name> in -Dlog4j.configuration.

Log dei job Managed Service for Apache Spark in Logging

Consulta Output e log dei job Managed Service for Apache Spark per informazioni sull'attivazione dei log dei driver dei job Managed Service for Apache Spark in Logging.

Accedere ai log dei job in Logging

Accedi ai log dei job Managed Service for Apache Spark utilizzando Esplora log, il comando gcloud logging o l'API Logging.

Console

I log del driver del job Managed Service for Apache Spark e del container YARN sono elencati nella risorsa Job Managed Service for Apache Spark gestito dal cloud.

Esempio: log del driver del job dopo l'esecuzione di una query di Esplora log con le seguenti selezioni:

  • Risorsa: Cloud Dataproc Job
  • Nome log: dataproc.job.driver

Esempio: log del container YARN dopo l'esecuzione di una query di Esplora log con le seguenti selezioni:

  • Risorsa: Cloud Dataproc Job
  • Nome log: dataproc.job.yarn.container

gcloud

Puoi leggere le voci di log dei job utilizzando il comando gcloud logging read. Gli argomenti delle risorse devono essere racchiusi tra virgolette ("..."). Il seguente comando utilizza le etichette del cluster per filtrare le voci di log restituite.

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

Esempio di output (parziale):

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

API REST

Puoi utilizzare l'API REST Logging per elencare le voci di log (vedi entries.list).

Log del cluster Managed Service for Apache Spark in Logging

Managed Service for Apache Spark esporta i seguenti log di Apache Hadoop, Spark, Hive, Zookeeper e altri log del cluster Managed Service for Apache Spark in Cloud Logging.

Tipo di log Nome log Descrizione Note
Log del daemon master 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
Nodo journal
NameNode HDFS
NameNode secondario HDFS
Controller di failover Zookeeper
Resource Manager YARN
Server di cronologia YARN
Metastore Hive
Hive server2
Server di cronologia dei job MapReduce
Server Zookeeper
Log del daemon worker hadoop-hdfs-datanode
hadoop-yarn-nodemanager
HDFS datanode
YARN nodemanager
Log di sistema autoscaler
google.dataproc.agent
google.dataproc.startup
Log dello strumento di scalabilità automatica di Managed Service for Apache Spark
Log dell'agente Managed Service for Apache Spark
Log dello script di avvio di Managed Service for Apache Spark + log dell'azione di inizializzazione
Log estesi (aggiuntivi) knox
gateway-audit
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
Tutti i log all'interno delle sottodirectory /var/log/ corrispondenti a:
knox (incluso gateway-audit.log)
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
L'impostazione della proprietà dataproc:dataproc.logging.extended.enabled=false disabilita la raccolta dei log estesi sul cluster
Log di sistema VM syslog
Syslog dei nodi master e worker del cluster
L'impostazione della proprietà dataproc:dataproc.logging.syslog.enabled=false disattiva la raccolta dei syslog della VM sul cluster

Accedere ai log del cluster in Cloud Logging

Puoi accedere ai log del cluster Managed Service for Apache Spark utilizzando Esplora log, il comando gcloud logging o l'API Logging.

Console

Seleziona le seguenti query per visualizzare i log del cluster in Esplora log:

  • Risorsa: Cloud Dataproc Cluster
  • Nome log: log name

gcloud

Puoi leggere le voci di log del cluster utilizzando il comando gcloud logging read. Gli argomenti delle risorse devono essere racchiusi tra virgolette ("..."). Il seguente comando utilizza le etichette del cluster per filtrare le voci di log restituite.

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

Esempio di output (parziale):

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

API REST

Puoi utilizzare l'API REST Logging per elencare le voci di log (vedi entries.list).

Autorizzazioni

Per scrivere log in Logging, il service account VM di Managed Service for Apache Spark deve disporre del ruolo IAM logging.logWriter. Il account di servizio Managed Service for Apache Spark predefinito dispone di questo ruolo. Se utilizzi un service account personalizzato, devi assegnare questo ruolo aaccount di serviziont.

Protezione dei log

Per impostazione predefinita, i log in Logging vengono criptati at-rest. Puoi abilitare le chiavi di crittografia gestite dal cliente (CMEK) per criptare i log. Per saperne di più sul supporto di CMEK, consulta Gestire le chiavi che proteggono i dati del router dei log e Gestire le chiavi che proteggono i dati di archiviazione di Logging.

Passaggi successivi