Panoramica
Il server di cronologia permanente (PHS) di Dataproc fornisce interfacce web per visualizzare la cronologia dei job in esecuzione su cluster Dataproc attivi o eliminati. È disponibile in Dataproc con versione immagine 1.5 e successive e viene eseguita su un cluster Dataproc a nodo singolo. Fornisce interfacce web per i seguenti file e dati:
File di cronologia dei job MapReduce e Spark
File di cronologia dei job di Flink (vedi Componente facoltativo Flink di Dataproc per creare un cluster Dataproc per eseguire i job Flink)
File di dati di Spostamenti dell'applicazione creati da YARN Timeline Service v2 e archiviati in un'istanza Bigtable.
Log di aggregazione YARN
Il server di cronologia permanente accede e visualizza i file di cronologia dei job Spark e MapReduce, i file di cronologia dei job Flink e i file di log YARN scritti in Cloud Storage durante il ciclo di vita dei cluster di job Dataproc.
Limitazioni
Un cluster PHS di Dataproc consente di visualizzare i file di cronologia dei job solo i job Dataproc eseguiti nel progetto in cui si trova il cluster PHS. Inoltre, la versione dell'immagine del cluster PHS e quella del cluster del job Dataproc devono corrispondere. Ad esempio, puoi utilizzare un cluster PHS con versione immagine Dataproc 2.0 per visualizzare i file di cronologia dei job eseguiti su cluster di job in versione immagine Dataproc 2.0 situati nel progetto in cui si trova il cluster PHS.
Un cluster PHS non supporta Kerberos e autenticazione personale.
Crea un cluster PHS Dataproc
Puoi eseguire il seguente comando gcloud dataproc clusters create
in un terminale locale o in Cloud Shell con i flag e le proprietà cluster seguenti per creare un cluster a nodo singolo del server di cronologia permanente Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT \ --region=REGION \ --single-node \ --enable-component-gateway \ --optional-components=COMPONENT \ --properties=PROPERTIES
- CLUSTER_NAME: specifica il nome del cluster PHS.
- PROJECT: specifica il progetto da associare al cluster PHS. Questo progetto deve essere uguale a quello associato al cluster che esegue i job (consulta Creare un cluster di job Dataproc).
- REGION: specifica una regione di Compute Engine in cui si troverà il cluster PHS.
--single-node
: un cluster PHS è un cluster a nodo singolo Dataproc.--enable-component-gateway
: questo flag abilita le interfacce web gateway dei componenti sul cluster PHS.- COMPONENT: utilizza questo flag per installare uno o più componenti facoltativi sul cluster. Devi specificare il componente facoltativo
FLINK
per eseguire il servizio web Flink HistoryServer sul cluster PHS per visualizzare i file della cronologia dei job Flink. - PROPERTIES. Specifica una o più proprietà del cluster.
Facoltativamente, aggiungi il flag --image-version per specificare la versione dell'immagine del cluster PHS. La versione dell'immagine PHS deve corrispondere a quella dell'immagine del cluster o dei cluster di job Dataproc. Consulta le Limitazioni.
Note:
- Gli esempi di valori delle proprietà in questa sezione utilizzano un carattere jolly "*" per consentire a PHS di trovare corrispondenze con più directory del bucket specificato scritte da cluster di job diversi (vedi Considerazioni sull'efficienza dei caratteri jolly).
- Negli esempi seguenti sono mostrati flag
--properties
separati per favorire la leggibilità. La prassi consigliata quando si utilizzagcloud dataproc clusters create
per creare un cluster Dataproc su Compute Engine è utilizzare un flag--properties
per specificare un elenco di proprietà separate da virgole (consulta la sezione relativa alla formattazione delle proprietà dei cluster).
Proprietà:
yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/*/yarn-logs
: aggiungi questa proprietà per specificare la località di Cloud Storage in cui il PHS accederà ai log YARN scritti dai cluster di job.spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history
: aggiungi questa proprietà per attivare la cronologia dei job Spark permanente. Questa proprietà specifica la località in cui il PHS accederà ai log della cronologia dei job Spark scritti dai cluster di job.Nei cluster Dataproc 2.0 e versioni successive, è necessario impostare anche le due proprietà seguenti per abilitare i log della cronologia di Spark PHS (consulta Opzioni di configurazione del server di cronologia Spark). Il valore
spark.history.custom.executor.log.url
è un valore letterale contenente {{SEGNAPOSTI}} per le variabili che verranno impostate dal server di cronologia permanente. Queste variabili non vengono impostate dagli utenti; trasmetti il valore della proprietà come mostrato.--properties=spark:spark.history.custom.executor.log.url.applyIncompleteApplication=false
--properties=spark:spark.history.custom.executor.log.url={{YARN_LOG_SERVER_URL}}/{{NM_HOST}}:{{NM_PORT}}/{{CONTAINER_ID}}/{{CONTAINER_ID}}/{{USER}}/{{FILE_NAME}}
mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done
: aggiungi questa proprietà per attivare la cronologia permanente dei job MapReduce. Questa proprietà specifica la località di Cloud Storage in cui il PHS accede ai log della cronologia dei job MapReduce scritti dai cluster di job.dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id
: dopo aver configurato Yarn Timeline Service v2, aggiungi questa proprietà per utilizzare il cluster PHS per visualizzare i dati della sequenza temporale nelle interfacce web YARN Application Timeline Service V2 e Tez (vedi Interfacce web gateway componenti).flink:historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs
: utilizza questa proprietà per configurare ilHistoryServer
Flink per monitorare un elenco di directory separato da virgole.
Esempi di proprietà:
--properties=spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history
--properties=mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done
--properties=flink:flink.historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs
crea un cluster di job di Dataproc
Puoi eseguire il seguente comando in un terminale locale o in Cloud Shell per creare un cluster di job Dataproc che esegue i job e scrive i file di cronologia dei job in un server di cronologia permanente (PHS).
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT \ --region=REGION \ --optional-components=COMPONENT \ --enable-component-gateway \ --properties=PROPERTIES \ other args ...
- CLUSTER_NAME: specifica il nome del cluster del job.
- PROJECT: specifica il progetto associato al cluster del job.
- REGION: specifica la regione di Compute Engine in cui si troverà il cluster del job.
--enable-component-gateway
: questo flag abilita le interfacce web gateway dei componenti sul cluster del job.- COMPONENT: utilizza questo flag per installare uno o più componenti facoltativi sul cluster. Specifica il componente facoltativo
FLINK
per eseguire job Flink sul cluster. PROPERTIES: aggiungi una o più delle seguenti proprietà cluster per impostare località Cloud Storage non predefinite relative ai PHS e altre proprietà dei cluster di job.
Note:
- Gli esempi di valori delle proprietà in questa sezione utilizzano un carattere jolly "*" per consentire a PHS di trovare corrispondenze con più directory del bucket specificato scritte da cluster di job diversi (vedi Considerazioni sull'efficienza dei caratteri jolly).
- Negli esempi seguenti sono mostrati flag
--properties
separati per favorire la leggibilità. La prassi consigliata quando si utilizzagcloud dataproc clusters create
per creare un cluster Dataproc su Compute Engine è utilizzare un flag--properties
per specificare un elenco di proprietà separate da virgole (consulta la sezione relativa alla formattazione delle proprietà dei cluster).
Proprietà:
yarn:yarn.nodemanager.remote-app-log-dir
: per impostazione predefinita, i log YARN aggregati sono abilitati sui cluster di job Dataproc e scritti nel bucket temporaneo del cluster. Aggiungi questa proprietà per specificare una località Cloud Storage diversa in cui il cluster scriverà i log di aggregazione per l'accesso da parte del server di cronologia permanente.--properties=yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/directory-name/yarn-logs
spark:spark.history.fs.logDirectory
espark:spark.eventLog.dir
: per impostazione predefinita, i file di cronologia dei job Spark vengono salvati nel clustertemp bucket
nella directory/spark-job-history
. Puoi aggiungere queste proprietà per specificare diverse posizioni di Cloud Storage per i file. Se vengono utilizzate entrambe le proprietà, devono puntare a directory nello stesso bucket.--properties=spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history
--properties=spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
mapred:mapreduce.jobhistory.done-dir
emapred:mapreduce.jobhistory.intermediate-done-dir
: per impostazione predefinita, i file di cronologia dei job di MapReduce vengono salvati nel clustertemp bucket
nelle directory/mapreduce-job-history/done
e/mapreduce-job-history/intermediate-done
. La posizionemapreduce.jobhistory.intermediate-done-dir
intermedia è l'archiviazione temporanea; i file intermedi vengono spostati nella posizionemapreduce.jobhistory.done-dir
al completamento del job MapReduce. Puoi aggiungere queste proprietà per specificare diverse posizioni di Cloud Storage per i file. Se vengono usate entrambe le proprietà, devono puntare alle directory dello stesso bucket.--properties=mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done
--properties=mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
spark:spark.history.fs.gs.outputstream.type
espark:spark.history.fs.gs.outputstream.sync.min.interval.ms
: aggiungi queste proprietà del connettore Cloud Storage per modificare il comportamento predefinito del modo in cui il cluster del job invia i dati a Cloud Storage. Il valore predefinito dispark:spark.history.fs.gs.outputstream.type
èBASIC
, che invia i dati a Cloud Storage dopo il completamento del job. Puoi cambiare questa impostazione inFLUSHABLE_COMPOSITE
per cambiare il comportamento di svuotamento e copiare i dati in Cloud Storage a intervalli regolari durante l'esecuzione del job.--properties=spark:spark.history.fs.gs.outputstream.type=FLUSHABLE_COMPOSITE
Il valore predefinito dispark:spark.history.fs.gs.outputstream.sync.min.interval.ms
, che controlla la frequenza con cui i dati vengono trasferiti a Cloud Storage, è5000ms
e può essere modificato in un intervallo di tempoms
diverso:--properties=spark:spark.history.fs.gs.outputstream.sync.min.interval.ms=intervalms
Nota: per impostare queste proprietà, la versione dell'immagine del cluster del job Dataproc deve utilizzare la versione 2.2.0 o successiva del connettore Cloud Storage. Puoi verificare la versione del connettore installata sulle versioni immagine nella pagina elenco delle versioni immagine di Dataproc.dataproc:yarn.atsv2.bigtable.instance
: dopo aver configurato Yarn Timeline Service v2, aggiungi questa proprietà per scrivere i dati della sequenza temporale YARN nell'istanza Bigtable specificata per essere visualizzati nelle interfacce web YARN Application Timeline Service V2 e Tez del cluster PHS. Nota: la creazione del cluster non riuscirà se l'istanza Bigtable non esiste.--properties=dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id
flink:jobhistory.archive.fs.dir
: Flink JobManager archivia i job Flink completati caricando le informazioni archiviate sui job in una directory di file system. Utilizza questa proprietà per impostare la directory di archiviazione inflink-conf.yaml
.--properties=flink:jobmanager.archive.fs.dir=gs://bucket-name/job-cluster-1/flink-job-history/completed-jobs
Utilizzo di PHS con carichi di lavoro batch Spark
Per utilizzare il server di cronologia permanente con Dataproc Serverless per i carichi di lavoro batch di Spark:
Seleziona o specifica il cluster PHS quando invii un carico di lavoro batch Spark.
Utilizzo di PHS con Dataproc su Google Kubernetes Engine
Per utilizzare il server di cronologia permanente con Dataproc su GKE:
Seleziona o specifica il cluster PHS quando crei un cluster virtuale Dataproc su GKE.
Interfacce web del gateway dei componenti
Nella pagina Cluster di Dataproc nella console Google Cloud, fai clic sul nome del cluster PHS per aprire la pagina Dettagli del cluster. Nella scheda Interfacce web, seleziona i link del gateway dei componenti per aprire le interfacce web in esecuzione sul cluster PHS.
Interfaccia web del server di cronologia Spark
Il seguente screenshot mostra l'interfaccia web del server di cronologia Spark che mostra i link ai job Spark eseguiti su job-cluster-1 e job-cluster-2 dopo aver configurato le localitàspark.history.fs.logDirectory
e spark:spark.eventLog.dir
dei cluster di job e spark.history.fs.logDirectory
come segue:
cluster-job-1 | gs://example-cloud-storage-bucket/job-cluster-1/spark-job-history |
cluster-job-2 | gs://example-cloud-storage-bucket/job-cluster-2/spark-job-history |
cluster-phs | gs://example-cloud-storage-bucket/*/spark-job-history |
Ricerca nome app
Puoi elencare i job per nome app nell'interfaccia web del server di cronologia Spark inserendo il nome di un'app nella casella di ricerca. Il nome dell'app può essere impostato in uno dei seguenti modi (elencati per priorità):
- Imposta il codice all'interno del codice dell'applicazione durante la creazione del contesto di Spark
- Impostata dalla proprietà spark.app.name quando viene inviato il job.
- Impostato da Dataproc sul nome completo della risorsa REST per il job (
projects/project-id/regions/region/jobs/job-id
)
Gli utenti possono inserire un termine del nome di un'app o di una risorsa nella casella Cerca per trovare ed elencare i job.
Log eventi
L'interfaccia web del server di cronologia Spark fornisce un pulsante Log eventi su cui puoi fare clic per scaricare i log eventi Spark. Questi log sono utili per esaminare il ciclo di vita dell'applicazione Spark.
Job Spark
Le applicazioni Spark sono suddivise in più job, ulteriormente suddivisi in più fasi. Ogni fase può includere più attività, che vengono eseguite su nodi esecutore (worker).
Fai clic su un ID app Spark nell'interfaccia web per aprire la pagina Job Spark, che fornisce una sequenza temporale degli eventi e un riepilogo dei job all'interno dell'applicazione.
Fai clic su un job per aprire una pagina Dettagli job con un grafo diretto aciclico (DAG, Directed Acyclic Graph) e un riepilogo delle fasi del job.
Fai clic su una fase o utilizza la scheda Fasi per selezionare una fase per aprire la pagina Dettagli fase.
I dettagli della fase includono una visualizzazione DAG, una sequenza temporale degli eventi e le metriche per le attività all'interno della fase. Puoi usare questa pagina per risolvere i problemi relativi ad attività strangolate, ritardi dello scheduler ed errori di esaurimento della memoria. Il visualizzatore DAG mostra la riga di codice da cui deriva la fase, in modo da tenere traccia dei problemi nel codice.
Fai clic sulla scheda Esecutori per informazioni sui nodi driver ed esecutori dell'applicazione Spark.
Le informazioni importanti in questa pagina includono il numero di core e il numero di attività eseguite su ciascun esecutore.
Interfaccia web di Tez
Tez è il motore di esecuzione predefinito per Hive e Pig su Dataproc. L'invio di un job Hive su un cluster di job Dataproc avvia un'applicazione Teez (consulta la pagina relativa all'utilizzo di Apache Hive su Dataproc ).
Se hai configurato Yarn Timeline Service v2 e hai impostato la proprietà dataproc:yarn.atsv2.bigtable.instance
quando hai creato i cluster di job PHS e Dataproc, YARN scrive i dati generati nella sequenza temporale dei job Hive e Pig nell'istanza Bigtable specificata per recuperarli e visualizzarli sull'interfaccia web Tez in esecuzione sul server PHS.
Interfaccia web V2 della sequenza temporale dell'applicazione YARN
Se hai configurato Yarn Timeline Service v2 e hai impostato la proprietà dataproc:yarn.atsv2.bigtable.instance
quando hai creato i cluster di job PHS e Dataproc, YARN scrive i dati generati nella sequenza temporale dei job nell'istanza Bigtable specificata per recuperarli e visualizzarli sull'interfaccia web di YARN Application Timeline Service in esecuzione sul server PHS. I job Dataproc sono elencati nella scheda Attività di flusso nell'interfaccia web.
Configura il servizio di cronologia di Yarn v2
Per configurare Yarn Timeline Service v2, configura un'istanza Bigtable e, se necessario, controlla i ruoli dell'account di servizio come segue:
Controlla i ruoli degli account di servizio, se necessario. L'account di servizio VM predefinito utilizzato dalle VM del cluster Dataproc dispone delle autorizzazioni necessarie per creare e configurare l'istanza Bigtable per il servizio Spostamenti YARN. Se crei il job o il cluster PHS con un account di servizio VM personalizzato, l'account deve avere il ruolo
Administrator
oBigtable User
di Bigtable.
Schema della tabella obbligatorio
Il supporto di Dataproc PHS per
YARN Timeline Service v2
richiede uno schema specifico creato nell'istanza
Bigtable. Dataproc crea lo schema richiesto quando viene creato un cluster di job o un cluster PHS con la proprietà dataproc:yarn.atsv2.bigtable.instance
impostata in modo che punti all'istanza di Bigtable.
Di seguito è riportato lo schema dell'istanza Bigtable richiesto:
Tabelle | Famiglie di colonne |
---|---|
prod.timelineservice.application | c,i,m |
prod.timelineservice.app_flow | m |
prod.timelineservice.entity | c,i,m |
prod.timelineservice.flowactivity | i |
prod.timelineservice.flowrun | i |
prod.timelineservice.subapplication | c,i,m |
Garbage collection Bigtable
Puoi configurare la garbage collection Bigtable in base all'età per le tabelle ATSv2:
Installa cbt, (inclusa la creazione di
.cbrtc file
).Crea il criterio di garbage collection ATSv2 basato sull'età:
export NUMBER_OF_DAYS = number \ cbt setgcpolicy prod.timelineservice.application c maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.application i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.application m maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.app_flow m maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.entity c maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.entity i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.entity m maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.flowactivity i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.flowrun i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.subapplication c maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.subapplication i maxage=${NUMBER_OF_DAYS} \ cbt setgcpolicy prod.timelineservice.subapplication m maxage=${NUMBER_OF_DAYS}
Note
NUMBER_OF_DAYS: il numero massimo di giorni è 30d
.