Ciclo di vita di un job Dataproc

Questa pagina illustra la sequenza di passaggi coinvolti nell'invio, nell'esecuzione e nel completamento di un job Dataproc. Inoltre, illustra il throttling e il debug dei job.

Flusso di job Dataproc

  1. L'utente invia il job a Dataproc.
  2. Il job è in attesa di essere acquisito dall'agente dataproc.
    • Se il job viene acquisito, JobStatus.State viene contrassegnato come RUNNING.
    • Se il job non viene acquisito a causa di un errore dell'agente, di un errore della rete Compute Engine o di un'altra causa, viene contrassegnato come ERROR.
  3. Una volta acquisito un job dall'agente, quest'ultimo verifica che sul nodo master del cluster Dataproc siano disponibili risorse sufficienti per avviare il driver.
    • Se non sono disponibili risorse sufficienti, il job viene ritardato (limitato). JobStatus.Substate mostra il job come QUEUED e Job.JobStatus.details fornisce informazioni sulla causa del ritardo.
  4. Se sono disponibili risorse sufficienti, l'agente dataproc avvia il processo del driver di job.
    • In questa fase, in genere sono in esecuzione una o più applicazioni in Apache Hadoop YARN. Tuttavia, le applicazioni Yarn potrebbero non avviarsi finché il driver non completa la scansione delle directory Cloud Storage o l'esecuzione di altre attività di job di avvio.
  5. L'agente dataproc invia periodicamente aggiornamenti a Dataproc relativi all'avanzamento dei job, alle metriche del cluster e alle applicazioni Yarn associate al job (consulta Monitoraggio e debug dei job).
  6. Le applicazioni di Yarn sono state completate.
    • Il job continua a essere segnalato come RUNNING mentre il driver esegue qualsiasi attività di completamento del job, ad esempio la materializzazione delle raccolte.
    • Un errore non gestito o non rilevato nel thread principale può lasciare il driver in uno stato zombie (contrassegnato come RUNNING senza informazioni sulla causa dell'errore).
  7. Il driver esce. L'agente dataproc segnala il completamento a Dataproc.
    • Dataproc segnala il job come DONE.

Concorrenza job

Puoi configurare il numero massimo di job Dataproc simultanei con la proprietà del cluster dataproc:dataproc.scheduler.max-concurrent-jobs quando crei un cluster. Se il valore di questa proprietà non è impostato, il limite superiore per i job simultanei viene calcolato come max((masterMemoryMb - 3584) / masterMemoryMbPerJob, 5). masterMemoryMb viene determinato dal tipo di macchina della VM principale. masterMemoryMbPerJob è 1024 per impostazione predefinita, ma è configurabile al momento della creazione del cluster con la proprietà del cluster dataproc:dataproc.scheduler.driver-size-mb.

Passaggi successivi