Output e log del job Dataproc

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

Log di Spark

Esistono due tipi di log Spark: log dei driver Spark e log esecutori Spark. I log del driver Spark contengono l'output del job. I log dell'eseguitore Spark contengono l'output dell'eseguibile o del programma di avvio del job, ad esempio un messaggio spark-submit "Richiesta inviata xxx" e possono essere utili per eseguire il debug degli errori del job.

Il driver del job di Dataproc, diverso dal driver Spark, è un'utilità di avvio per molti tipi di job. All'avvio dei job Spark, questi vengono eseguiti un wrapper sull'eseguibile spark-submit sottostante, che avvia la Spark conducente. 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 e i log di Spark vengono inviati al driver del job Dataproc.

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

Panoramica delle proprietà dei job Dataproc e Spark

Proprietà Valore Predefinito Descrizione
dataproc:dataproc.logging.stackdriver.job.driver.enable true o false falso Deve essere impostato al momento della creazione del cluster. Quando true, l'output del driver del job è in Logging, associate alla risorsa job; quando false, conducente del lavoro l'output non è in Logging.
Nota: per attivare i log del driver dei job in Logging sono necessarie anche le seguenti impostazioni della proprietà del cluster, che vengono impostate 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 falso Deve essere impostato al momento della creazione del cluster. Se true, vengono associati i log del container YARN del job con la risorsa job; quando false, log del container YARN del job alla risorsa cluster.
spark:spark.submit.deployMode client o cluster client Controlla la modalità Spark client o cluster.

Job Spark inviati utilizzando l'API jobs Dataproc

Le tabelle in questa sezione elencano l'effetto di diverse impostazioni delle proprietà sulla destinazione dell'output del driver del job Dataproc quando i job vengono inviati tramite l'API Dataproc jobs, che include l'invio dei job tramite la console Google Cloud, gcloud CLI e le librerie client 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 Dataproc e verranno applicate solo al job.

Output del driver del job Dataproc

Le seguenti tabelle elencano l'effetto delle diverse impostazioni delle proprietà sul destinazione dell'output del driver del job Dataproc.

dataproc:
dataproc.logging.stackdriver.job.driver.enable
Output
false (valore predefinito)
  • Trasmesso in streaming al client
  • In Cloud Storage nella directory generata da Dataproc driverOutputResourceUri
  • Non nel logging
true
  • Trasmesso in streaming al client
  • In Cloud Storage, nel traffico generato da Dataproc driverOutputResourceUri
  • In Logging: dataproc.job.driver sotto la risorsa del job.

Log del driver Spark

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

spark:
spark.submit.deployMode
dataproc:
dataproc.logging.stackdriver.job.driver.enable
dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
Output del driver
client false (valore predefinito) true o false
  • Trasmesso in streaming al client
  • In Cloud Storage nella directory generata da Dataproc driverOutputResourceUri
  • Non nel logging
client true vero o falso
  • Trasmesso in streaming al client
  • In Cloud Storage nella directory generata da Dataproc driverOutputResourceUri
  • In Log: dataproc.job.driver nella risorsa job
cluster false (valore predefinito) falso
  • Streaming non trasmesso al client
  • Non in Cloud Storage
  • In Logging yarn-userlogs nella risorsa cluster
cluster true true
  • Streaming non trasmesso al client
  • Non in Cloud Storage
  • In Logging: dataproc.job.yarn.container nella risorsa del job

Log esecutore Spark

Le seguenti tabelle elencano l'effetto delle diverse impostazioni delle proprietà sul dei log degli esecutori Spark.

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

Job Spark inviati senza utilizzare l'API jobs Dataproc

Questa sezione elenca l'effetto delle diverse impostazioni della proprietà sul destinazione dei log dei job Spark quando vengono inviati i job senza utilizzare l'API Dataproc jobs, ad esempio durante l'invio un job direttamente su un nodo del cluster utilizzando spark-submit o un job di Jupyter o Zeppelin. Questi job non hanno ID job o driver Dataproc.

Log del driver Spark

Le seguenti tabelle elencano l'effetto di 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
  • Non trasmesso in streaming al client
  • Non in Cloud Storage
  • In Logging yarn-userlogs nella risorsa cluster

Log dell'esecutore Spark

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

Visualizza output job

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

Console

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

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

Comando g-cloud

Quando invii un'offerta di lavoro con gcloud dataproc job send l'output del job viene visualizzato nella console. Puoi "ripartecipare" in un secondo momento, su un altro computer o una nuova finestra passando l'ID del job alla gcloud dataproc job wait . L'ID job è un GUID, come 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 di staging o nel bucket specificato durante la creazione del cluster. Un link a l'output del job in Cloud Storage è fornito Job.driverOutputResourceUri campo restituito da:

  • una richiesta all'API jobs.get.
  • gcloud dataproc job describe job-id .
    $ 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 Dataproc in Logging.