Quando invii un job Dataproc, Dataproc raccoglie automaticamente l'output del job e te 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 del driver Spark e log dell'executor 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 di job Dataproc, distinto dal driver Spark, è un programma di avvio per molti tipi di job. Quando vengono avviati i job Spark, viene eseguito come wrapper 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 processospark-submit
e i log di Spark vengono inviati al driver del job Dataproc.Modalità
cluster
: il driver Spark esegue il job in un contenitore YARN. I log del driver Spark 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. Se true ,
l'output del driver del job è in Logging,
associato alla risorsa del job; se false , l'output del driver del job
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 , i log dei contenitori YARN del job sono associati
alla risorsa del job; se false , i log dei contenitori YARN del job
sono associati alla risorsa del 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 tabelle seguenti elencano l'effetto di impostazioni di proprietà diverse sulla destinazione dell'output del driver dei job Dataproc.
dataproc: |
Output |
---|---|
false (valore predefinito) |
|
true |
|
Log del driver Spark
Le tabelle seguenti elencano l'effetto di impostazioni di proprietà diverse sulla destinazione dei log del driver Spark.
spark: |
dataproc: |
dataproc: |
Output del driver |
---|---|---|---|
client | false (valore predefinito) | true o false |
|
client | true | true o false |
|
cluster | false (valore predefinito) | falso |
|
cluster | true | true |
|
Log dell'esecutore Spark
Le tabelle seguenti elencano l'effetto di impostazioni di proprietà diverse sulla destinazione dei log dell'executor Spark.
dataproc: |
Log dell'eseguitore |
---|---|
false (valore predefinito) | In Log: yarn-userlogs nella risorsa cluster |
true | In Logging dataproc.job.yarn.container nella risorsa job |
Job Spark inviati senza utilizzare l'API jobs
Dataproc
Questa sezione elenca l'effetto di diverse impostazioni delle proprietà sulla destinazione dei log dei job Spark quando i job vengono inviati senza utilizzare l'API jobs
Dataproc, ad esempio quando si invia un job direttamente su un nodo del cluster utilizzando spark-submit
o quando si utilizza un Jupyter o un notebook 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: |
Output del driver |
---|---|
client |
|
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.
Visualizzare l'output del job
Puoi accedere all'output del job Dataproc nella console Google Cloud, nella CLI gcloud, in Cloud Storage o in 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 viene aggiornato periodicamente con nuovi contenuti.
Comando g-cloud
Quando invii un job con il comando
gcloud dataproc jobs submit, l'output del job viene visualizzato nella console. Puoi "ricongiungere"
l'output in un secondo momento, su un altro computer o in
una nuova finestra passando l'ID del job al
comando gcloud dataproc jobs 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 all'output del job in Cloud Storage è fornito nel campo Job.driverOutputResourceUri restituito da:
- una richiesta all'API jobs.get.
- un comando gcloud dataproc jobs describe job-id.
$ gcloud dataproc jobs describe spark-pi ... driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput ...