Quando invii un job 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 complicati.
Log di Spark
Esistono due tipi di log di Spark: i log del driver Spark e i log dell'esecutore Spark.
I log del driver Spark contengono l'output del job, mentre i log dell'esecutore Spark contengono l'output dell'eseguibile
o del launcher del job, ad esempio un messaggio spark-submit "Submitted application xxx", e
possono essere utili per il debug degli errori del job.
Il driver del job Dataproc, che è distinto dal driver Spark,
è un launcher per molti tipi di job. Quando avvii i job Spark, viene eseguito come un
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 container 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 | false | Deve essere impostata al momento della creazione del cluster. Se true,
l'output del driver del job è in Logging,
associato alla risorsa job; se false, l'output del driver del job
non è in Logging.Nota: per abilitare i log del driver del job in Logging sono necessarie anche le seguenti impostazioni delle 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 | false | Deve essere impostata al momento della creazione del cluster.
Se true, i log dei container YARN del job sono associati alla risorsa job; se false, i log dei container YARN del job sono associati alla risorsa cluster. |
spark:spark.submit.deployMode |
client o cluster | client | Controlla la modalità client o cluster di Spark. |
Job Spark inviati utilizzando l'API jobs di Dataproc
Le tabelle in questa sezione elencano l'effetto delle diverse impostazioni delle proprietà sulla
destinazione dell'output del driver del job Dataproc quando i job vengono inviati
tramite l'API jobs di Dataproc, che include l'invio dei job tramite la
Google Cloud console, 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 tabelle seguenti elencano l'effetto delle diverse impostazioni delle proprietà sulla destinazione dell'output del driver del job Dataproc.
dataproc: |
Output |
|---|---|
| false (impostazione predefinita) |
|
| true |
|
Log del driver Spark
Le tabelle seguenti elencano l'effetto delle diverse impostazioni delle proprietà sulla destinazione dei log del driver Spark.
spark: |
dataproc: |
dataproc: |
Output del driver |
|---|---|---|---|
| client | false (impostazione predefinita) | true o false |
|
| client | true | true o false |
|
| cluster | false (impostazione predefinita) | false |
|
| cluster | true | true |
|
Log dell'esecutore Spark
Le tabelle seguenti elencano l'effetto delle diverse impostazioni delle proprietà sulla destinazione dei log dell'esecutore Spark.
dataproc: |
Log dell'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 jobs di Dataproc
Questa sezione elenca l'effetto delle diverse impostazioni delle proprietà sulla
destinazione dei log dei job Spark quando i job vengono inviati
senza utilizzare l'API jobs di Dataproc, ad esempio quando si invia
un job direttamente su un nodo del cluster utilizzando spark-submit o quando si utilizza un notebook Jupyter
o Zeppelin. Questi job non hanno ID o driver del job Dataproc.
Log del driver Spark
Le tabelle seguenti elencano l'effetto delle diverse impostazioni delle proprietà sulla
destinazione dei log del driver Spark per i job non inviati tramite l'API jobs di Dataproc.
spark: |
Output del driver |
|---|---|
| client |
|
| cluster |
|
Log dell'esecutore Spark
Quando i job Spark non vengono inviati tramite l'API jobs di Dataproc, i log
dell'esecutore si trovano in Logging yarn-userlogs nella risorsa cluster.
Visualizzare l'output del job
Puoi accedere all'output del job Dataproc nella Google Cloud console, in gcloud CLI, 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 del job 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 "riunire"
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,
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 in nel bucket di staging o nel bucket specificato quando hai creato il cluster. Un link all' output del job in Cloud Storage è fornito nel Job.driverOutputResourceUri restituito da:
- Una richiesta 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 ...