Ciclo di vita di un job Dataproc

Questa pagina descrive la sequenza di passaggi coinvolti nell'invio, nell'esecuzione e nel completamento di un job Dataproc. Vengono inoltre trattati il throttling e il debug dei job.

Flusso dei 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 è contrassegnato come RUNNING.
    • Se il job non viene acquisito a causa di un errore dell'agente, di un errore di rete di Compute Engine o di un'altra causa, il job viene contrassegnato come ERROR.
  3. Una volta acquisito un job dall'agente, quest'ultimo verifica che siano disponibili risorse sufficienti sul nodo master del cluster Dataproc 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 termina la scansione delle directory Cloud Storage o l'esecuzione di altre attività del job di avvio.
  5. L'agente dataproc invia periodicamente aggiornamenti a Dataproc sullo stato di avanzamento del job, sulle metriche del cluster e sulle applicazioni Yarn associate al job (vedi Monitoraggio e debug dei job).
  6. Richiesta o richieste di Yarn completate.
    • Il job continua a essere segnalato come RUNNING mentre l'autista esegue le 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 conducente 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 è determinato dal tipo di macchina della VM master. 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