Output e log del job Dataproc

Quando invii un job di Dataproc, Dataproc raccoglie automaticamente l'output del job e lo rende disponibile. Ciò significa che puoi esaminare rapidamente l'output del job senza dover mantenere una connessione al cluster durante l'esecuzione dei job o esaminare file di log complessi.

Log Spark

Esistono due tipi di log Spark: log del driver Spark e log esecutore Spark. I log del driver Spark contengono l'output del job, mentre i log degli esecutori di Spark contengono l'output del job eseguibile o dell'Avvio app, ad esempio il messaggio spark-submit "Inviata applicazione xxx", e possono essere utili per il debug degli errori del job.

Il driver del job Dataproc, distinto dal driver di Spark, è un programma di avvio per molti tipi di job. All'avvio dei job Spark, questi vengono eseguiti come wrapping sull'eseguibile spark-submit sottostante, che avvia il driver Spark. Il driver Spark esegue il job sul cluster Dataproc in modalità Spark client o cluster:

  • Modalità client: il driver Spark esegue il job nel processo spark-submit, mentre i log di Spark vengono inviati al driver del job Dataproc.

  • Modalità cluster: il driver Spark esegue il job in un container YARN. I log del driver Spark non sono disponibili per il driver del job di Dataproc.

Panoramica delle proprietà dei job Dataproc e Spark

Proprietà Valore Predefinito Descrizione
dataproc:dataproc.logging.stackdriver.job.driver.enable true o false false Deve essere impostato al momento della creazione del cluster. Quando true, l'output del driver del job è in Logging, associato alla risorsa job; quando false, l'output del driver del job non è in Logging.
Nota: le seguenti impostazioni delle proprietà del cluster sono necessarie anche per abilitare i log dei driver dei job in Logging e vengono configurate per impostazione predefinita quando viene creato un cluster: dataproc:dataproc.logging.stackdriver.enable=true e dataproc:jobs.file-backed-output.enable=true
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable true o false false Deve essere impostato al momento della creazione del cluster. Quando true, i log del container YARN del job vengono associati alla risorsa job; quando false, i log del container YARN del job vengono associati alla risorsa cluster.
spark:spark.submit.deployMode client o cluster client Controlla la modalità Spark client o cluster.

Job Spark inviati utilizzando l'API Dataproc jobs

Le tabelle di questa sezione elencano gli effetti delle diverse impostazioni delle proprietà sulla destinazione dell'output del driver del job di Dataproc quando i job vengono inviati tramite l'API jobs di Dataproc, inclusa l'invio dei job tramite la console Google Cloud, gcloud CLI e le librerie client di Cloud.

Le proprietà Dataproc e Spark elencate possono essere impostate con il flag --properties quando viene creato un cluster e verranno applicate a tutti i job Spark eseguiti sul cluster. Le proprietà Spark possono essere impostate anche con il flag --properties (senza il prefisso "spark:") quando un job viene inviato all'API jobs di Dataproc e verranno applicate solo al job.

Output del driver del job Dataproc

Le seguenti tabelle elencano gli effetti di diverse impostazioni delle proprietà sulla destinazione dell'output del driver del job di Dataproc.

dataproc:
dataproc.logging.stackdriver.job.driver.enable
Output
false (impostazione predefinita)
  • Trasmesso in streaming al client
  • In Cloud Storage nell'evento driverOutputResourceUri generato da Dataproc
  • Non in Logging
true
  • Trasmesso in streaming al client
  • In Cloud Storage nell'evento driverOutputResourceUri generato da Dataproc
  • In Logging: dataproc.job.driver nella risorsa job.

Log del driver Spark

Le seguenti tabelle elencano l'effetto di diverse impostazioni delle proprietà sulla destinazione dei log dei driver Spark.

spark:
spark.submit.deployMode
dataproc:
dataproc.logging.stackdriver.job.driver.enable
dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Output driver
client false (impostazione predefinita) true o false
  • Trasmesso in streaming al client
  • In Cloud Storage nell'evento driverOutputResourceUri generato da Dataproc
  • Non in Logging
client true true o false
  • Trasmesso in streaming al client
  • In Cloud Storage nell'evento driverOutputResourceUri generato da Dataproc
  • In Logging: dataproc.job.driver nella risorsa job
cluster false (impostazione predefinita) false
  • Trasmissione non in streaming al client
  • Non in Cloud Storage
  • In Logging yarn-userlogs all'interno della risorsa cluster
cluster true true
  • Trasmissione non in streaming al client
  • Non in Cloud Storage
  • In Logging: dataproc.job.yarn.container nella risorsa job

Log esecutore Spark

Le seguenti tabelle elencano l'effetto di diverse impostazioni delle proprietà sulla destinazione dei log dell'esecutore Spark.

dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Log esecutore
false (impostazione predefinita) In Logging: yarn-userlogs nella risorsa cluster
true In Logging dataproc.job.yarn.container nella risorsa job

Job Spark inviati senza utilizzare l'API Dataproc jobs

Questa sezione elenca gli effetti delle diverse impostazioni delle proprietà sulla destinazione dei log dei job Spark quando i job vengono inviati senza utilizzare l'API Dataproc jobs, ad esempio quando si invia un job direttamente su un nodo del cluster utilizzando spark-submit o quando si utilizza un blocco note Jupyter o Zeppelin. Questi job non hanno ID o driver di job Dataproc.

Log del driver Spark

Le seguenti tabelle elencano gli effetti delle diverse impostazioni delle proprietà sulla destinazione dei log del driver Spark per i job non inviati tramite l'API Dataproc jobs.

spark:
spark.submit.deployMode
Output driver
client
  • Trasmesso in streaming al client
  • Non in Cloud Storage
  • Non in Logging
cluster
  • Trasmissione non in streaming al client
  • Non in Cloud Storage
  • In Logging yarn-userlogs all'interno della risorsa cluster

Log esecutore Spark

Se i job Spark non vengono inviati tramite l'API Dataproc jobs, i log dell'esecutore si trovano in Logging yarn-userlogs nella risorsa cluster.

Visualizza output del job

Puoi accedere all'output del job di Dataproc nella console Google Cloud, in gcloud CLI, in Cloud Storage o Logging.

Console

Per visualizzare l'output del job, vai alla sezione Job di Dataproc del progetto, quindi fai clic su ID job per visualizzare l'output del job.

Se il job è in esecuzione, l'output del job si aggiorna periodicamente con nuovi contenuti.

Comando g-cloud

Quando invii un job con il comando gcloud dataproc job send, l'output del job viene visualizzato nella console. Puoi "ripartecipare" all'output in un secondo momento, su un altro computer o in una nuova finestra, passando l'ID del tuo job al comando gcloud dataproc job Wait. L'ID job è un GUID, ad esempio 5c1754a5-34f7-4553-b667-8a1199cb9cab. Ecco un esempio.

gcloud dataproc jobs wait 5c1754a5-34f7-4553-b667-8a1199cb9cab \
    --project my-project-id --region my-cluster-region
Waiting for job output...
... INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.4.2-hadoop2
... 16:47:45 INFO client.RMProxy: Connecting to ResourceManager at my-test-cluster-m/
...

Cloud Storage

L'output del job viene archiviato in Cloud Storage nel bucket gestione temporanea o nel bucket specificato al momento della creazione del cluster. Un link all'output del job in Cloud Storage è fornito nel campo Job.driverOutputResourceUri restituito da:

  • una richiesta API jobs.get.
  • un comando job-id gcloud dataproc job describe.
    $ gcloud dataproc jobs describe spark-pi
    ...
    driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput
    ...
    

Logging

Consulta Log di Dataproc per informazioni su come visualizzare l'output del job di Dataproc in Logging.