Log Dataproc

I log dei job e dei cluster di Dataproc possono essere visualizzati, cercati, filtrati e archiviati in Cloud Logging.

Livelli di registrazione dei componenti

Imposta i livelli di logging di Spark, Hadoop, Flink e altri componenti Dataproc con le proprietà del cluster log4j specifiche del componente, come hadoop-log4j, quando crei un cluster. I livelli di logging dei componenti basati su cluster si applicano ai demoni di servizio, come YARN ResourceManager, e ai job in esecuzione 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 impostare i livelli di logging dei componenti anche 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 ulteriori informazioni, consulta Proprietà dei cluster e dei 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.

  • Esempio: versione immagine Dataproc 2.0 con Spark 3.1 per impostare log4j.logger.org.apache.spark:

    gcloud dataproc clusters create ... \
        --properties spark-log4j:log4j.logger.org.apache.spark=DEBUG
    
  • Esempio: versione immagine Dataproc 2.1 con Spark 3.3 per impostare logger.sparkRoot.level:

    gcloud dataproc clusters create ...\
        --properties spark-log4j:logger.sparkRoot.level=debug
    

Livelli di registrazione del driver del job

Dataproc utilizza un livello di logging predefinito di INFO per i programmi del 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 di log root su WARN e il livello di log com.example su INFO.

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

Livelli di registrazione dell'esecutore Spark

Per configurare i livelli di logging dell'esecutore 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à Cloud Storage nella directory di lavoro locale del job, a cui viene fatto riferimento come file:<name> in -Dlog4j.configuration.

Log dei job Dataproc in Logging

Consulta la sezione Output e log dei job Dataproc per informazioni su come attivare i log del driver dei job Dataproc in Logging.

Accedere ai log dei job in Logging

Accedi ai log dei job Dataproc utilizzando Esplora log, il comando gcloud logging o l'API Logging.

Console

I log del driver del job di Dataproc e del contenitore YARN sono elencati nella risorsa Job Cloud Dataproc.

Esempio: log del driver di 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 contenitore YARN dopo l'esecuzione di una query di Esplora log con le seguenti selezioni:

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

gcloud

Puoi leggere le voci di log dei job utilizzando il comando gcloud logging read. Gli argomenti della risorsa 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"

Output di esempio (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 Dataproc in Logging

Dataproc esporta in Cloud Logging i seguenti log di Apache Hadoop, Spark, Hive, Zookeeper e di altri cluster Dataproc.

Tipo di log Nome log Descrizione
Log del daemon master hadoop-hdfs
hadoop-hdfs-namenode
hadoop-hdfs-secondary namenode
hadoop-hdfs-zkfc
hadoop-yarn-resourcemanager
hadoop-yarn-timelineserver
hive-metastore
hive-server2
mapred-mapred-historyserver
zookeeper
Nodo di log
Namenode HDFS
Namenode HDFS secondario
Controllore 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
DataNode HDFS
NodeManager YARN
Log di sistema autoscaler
google.dataproc.agent
google.dataproc.startup
Log dell'agente di scalabilità automatica di Dataproc
Log dell'agente di Dataproc
Log dello script di avvio di Dataproc + log dell'azione di inizializzazione

Accedere ai log del cluster in Cloud Logging

Puoi accedere ai log del cluster Dataproc utilizzando il Visualizzatore log, il comando gcloud logging o l'API Logging.

Console

Effettua le seguenti selezioni di query per visualizzare i log del cluster in Esplora log:

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

gcloud

Puoi leggere le voci di log del cluster utilizzando il comando gcloud logging read. Gli argomenti della risorsa 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

Output di esempio (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 (consulta entries.list).

Autorizzazioni

Per scrivere log in Logging, l'account di servizio VM Dataproc deve avere il ruolo IAM logging.logWriter. Il account di servizio Dataproc predefinito ha questo ruolo. Se utilizzi un account di servizio personalizzato, devi assegnare questo ruolo all'account di servizio.

Protezione dei log

Per impostazione predefinita, i log in Logging vengono criptati at-rest. Puoi attivare le chiavi di crittografia gestite dal cliente (CMEK) per criptare i log. Per ulteriori informazioni sul supporto delle chiavi CMEK, consulta Gestire le chiavi che proteggono i dati di Log Router e Gestire le chiavi che proteggono i dati di archiviazione del logging.

Passaggi successivi