Panoramica
Il PHS (server di cronologia permanente) Dataproc fornisce interfacce web per visualizzare la cronologia dei job per i job eseguiti su cluster Dataproc attivi o eliminati. È disponibile nella versione immagine 1.5 e successive di Dataproc ed è eseguito su un cluster Dataproc a un solo nodo. Fornisce interfacce web per i seguenti file e dati:
File della cronologia dei job MapReduce e Spark
File della cronologia dei job Flink (consulta Componente Flink facoltativo di Dataproc per creare un cluster Dataproc per eseguire job Flink)
File di dati di cronologia delle applicazioni creati da YARN Timeline Service v2 e archiviati in un'istanza Bigtable.
Log di aggregazione YARN
Il server di cronologia permanente accede e mostra 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
La versione dell'immagine del cluster PHS e la versione dell'immagine dei cluster di job Dataproc devono corrispondere. Ad esempio, puoi utilizzare un cluster PHS con versione dell'immagine Dataproc 2.0 per visualizzare i file della cronologia dei job dei job eseguiti su cluster di job con versione dell'immagine Dataproc 2.0 che si trovavano nel progetto in cui si trova il cluster PHS.
Un cluster PHS non supporta Kerberos e l'autenticazione personale.
Crea un cluster PHS Dataproc
Puoi eseguire il seguente
gcloud dataproc clusters create
comando in un terminale locale o in
Cloud Shell con i seguenti flag e
proprietà del cluster
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 lo stesso associato al cluster che esegue i job (vedi Creare un cluster di job Dataproc).
- REGION: specifica una regione Compute Engine in cui verrà posizionato il cluster PHS.
--single-node
: un cluster PHS è un cluster a un solo nodo Dataproc.--enable-component-gateway
: questo flag attiva le interfacce web del gateway dei componenti sul cluster PHS.- COMPONENT: utilizza questo flag per installare uno o più
componenti facoltativi
sul cluster. Per visualizzare i file della cronologia dei job Flink, devi specificare il componente facoltativo
FLINK
per eseguire il servizio web Flink HistoryServer sul cluster PHS. - PROPERTIES. Specifica una o più proprietà del cluster.
Se vuoi, aggiungi il flag --image-version per specificare la versione dell'immagine del cluster PHS. La versione dell'immagine PHS deve corrispondere alla versione dell'immagine dei cluster di job Dataproc. Consulta la sezione Limitazioni.
Note:
- Gli esempi di valori delle proprietà in questa sezione utilizzano un carattere jolly "*" per consentire al PHS di abbinare più directory nel bucket specificato in cui scrivono diversi cluster di job (ma consulta Considerazioni sull'efficienza dei caratteri jolly).
- Nei seguenti esempi vengono mostrati flag
--properties
separati per favorire la leggibilità. La pratica 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 virgola (consulta la formattazione delle proprietà del cluster).
Proprietà:
yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/*/yarn-logs
: aggiungi questa proprietà per specificare la posizione di Cloud Storage in cui 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 posizione in cui il PHS accederà ai log della cronologia dei job di Spark scritti dai cluster di job.Nei cluster Dataproc 2.0 e versioni successive, devono essere impostate anche le due proprietà seguenti per attivare i log della cronologia Spark del PHS (vedi Opzioni di configurazione del server di cronologia Spark). Il valore
spark.history.custom.executor.log.url
è un valore letterale che contiene {{SEGNIPOSTO}} per le variabili che verranno impostate dal server di cronologia permanente. Queste variabili non vengono impostate dagli utenti; passa 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 dei job MapReduce persistente. Questa proprietà specifica la posizione di Cloud Storage in cui PHS accederà 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 su YARN Application Timeline Service V2 e sulle interfacce web di Tez (vedi Interfacce web di Component Gateway).flink:historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs
: utilizza questa proprietà per configurareHistoryServer
Flink in modo da 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 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 della 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 di job.
- PROJECT: specifica il progetto associato al cluster di job.
- REGION: specifica la regione Compute Engine in cui si troverà il cluster di job.
--enable-component-gateway
: questo flag attiva le interfacce web del gateway dei componenti nel cluster di 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à del cluster per impostare posizioni Cloud Storage non predefinite correlate a PHS e altre proprietà del cluster di job.
Note:
- Gli esempi di valori delle proprietà in questa sezione utilizzano un carattere jolly "*" per consentire al PHS di abbinare più directory nel bucket specificato in cui scrivono diversi cluster di job (ma consulta Considerazioni sull'efficienza dei caratteri jolly).
- Nei seguenti esempi vengono mostrati flag
--properties
separati per favorire la leggibilità. La pratica 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 virgola (consulta la formattazione delle proprietà del cluster).
Proprietà:
yarn:yarn.nodemanager.remote-app-log-dir
: per impostazione predefinita, i log YARN aggregati sono abilitati nei cluster di job Dataproc e scritti nel bucket temporaneo del cluster. Aggiungi questa proprietà per specificare una posizione Cloud Storage diversa in cui il cluster scriverà i log di aggregazione per l'accesso da parte del server di cronologia persistente.--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 della 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 questi 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 della cronologia dei job MapReduce vengono salvati nel clustertemp bucket
nelle directory/mapreduce-job-history/done
e/mapreduce-job-history/intermediate-done
. La posizione intermediamapreduce.jobhistory.intermediate-done-dir
è uno spazio di archiviazione temporaneo; i file intermedi vengono spostati nella posizionemapreduce.jobhistory.done-dir
al termine del job MapReduce. Puoi aggiungere queste proprietà per specificare posizioni Cloud Storage diverse per questi file. Se vengono utilizzate entrambe le proprietà, devono puntare a directory nello 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 di invio dei dati da parte del cluster di job a Cloud Storage. Il valore predefinito dispark:spark.history.fs.gs.outputstream.type
èBASIC
, che invia i dati a Cloud Storage al termine del job. Puoi modificare questa impostazione inFLUSHABLE_COMPOSITE
per cambiare il comportamento di svuotamento in modo da copiare i dati in Cloud Storage a intervalli regolari durante l'esecuzione del job. Il valore predefinito di--properties=spark:spark.history.fs.gs.outputstream.type=FLUSHABLE_COMPOSITE
spark:spark.history.fs.gs.outputstream.sync.min.interval.ms
, che controlla la frequenza con cui i dati vengono trasferiti in Cloud Storage, è5000ms
e può essere modificato in un intervallo di tempoms
diverso: Nota: per impostare queste proprietà, la versione dell'immagine del cluster di job Dataproc deve utilizzare il connettore Cloud Storage 2.2.0 o versioni successive. Puoi controllare la versione del connettore installata sulle versioni immagine dalla pagina Elenco delle versioni immagine di Dataproc.--properties=spark:spark.history.fs.gs.outputstream.sync.min.interval.ms=intervalms
dataproc:yarn.atsv2.bigtable.instance
: dopo aver configurato Yarn Timeline Service v2, aggiungi questa proprietà per scrivere i dati della cronologia di YARN nell'istanza Bigtable specificata per la visualizzazione nel cluster PHS YARN Application Timeline Service V2 e nelle interfacce web di Tez. Nota: la creazione del cluster non andrà a buon fine 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 dei job in una directory del file system. Utilizza questa proprietà per impostare la directory dell'archivio inflink-conf.yaml
.--properties=flink:jobmanager.archive.fs.dir=gs://bucket-name/job-cluster-1/flink-job-history/completed-jobs
Utilizzare PHS con i carichi di lavoro batch Spark
Per utilizzare il server di cronologia permanente con Dataproc Serverless per i carichi di lavoro batch Spark:
Seleziona o specifica il cluster PHS quando invii un carico di lavoro batch Spark.
Utilizzare 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 di Component Gateway
Nella console Google Cloud, nella pagina Dataproc Cluster, fai clic sul nome del cluster PHS per aprire la pagina Dettagli cluster. Nella scheda Interfacce web, seleziona i link al gateway dei componenti per aprire le interfacce web in esecuzione sul cluster PHS.
Interfaccia web del server di cronologia Spark
Lo screenshot seguente mostra l'interfaccia web di Spark History Server che mostra i link ai job Spark eseguiti su job-cluster-1 e job-cluster-2 dopo aver configurato le posizioni spark.history.fs.logDirectory
e spark:spark.eventLog.dir
dei cluster di job e spark.history.fs.logDirectory
del cluster PHS come segue:
job-cluster-1 | gs://example-cloud-storage-bucket/job-cluster-1/spark-job-history |
job-cluster-2 | gs://example-cloud-storage-bucket/job-cluster-2/spark-job-history |
phs-cluster | gs://example-cloud-storage-bucket/*/spark-job-history |
Ricerca del nome dell'app
Puoi elencare i job per nome dell'app nell'interfaccia web del server di cronologia Spark inserendo un nome dell'app nella casella di ricerca. Il nome dell'app può essere impostato in uno dei seguenti modi (elencati in ordine di priorità):
- Impostato all'interno del codice dell'applicazione durante la creazione del contesto Spark
- Impostato dalla proprietà spark.app.name al momento dell'invio del 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 che corrisponda al nome di un'app o di una risorsa nella casella Cerca per trovare e 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, che a loro volta sono suddivisi in più fasi. Ogni fase può avere più attività, che vengono eseguite su node di esecuzione (worker).
Fai clic su un ID app Spark nell'interfaccia web per aprire la pagina Job Spark, che fornisce un'organizzazione temporale degli eventi e un riepilogo dei job all'interno dell'applicazione.
Fai clic su un job per aprire la pagina Dettagli job con un grafo diretto aciclico (DAG) e il riepilogo delle fasi del job.
Fai clic su una fase o utilizza la scheda Fasi per selezionarne una e aprire la pagina dettagli della fase.
La sezione Dettagli fase include una visualizzazione del DAG, una sequenza temporale degli eventi e le metriche per le attività all'interno della fase. Puoi utilizzare questa pagina per risolvere i problemi relativi alle attività interrotte, ai ritardi dell'organizzatore e agli errori di esaurimento della memoria. Il visualizzatore DAG mostra la riga di codice da cui è derivata la fase, aiutandoti a risalire ai problemi nel codice.
Fai clic sulla scheda Esecutori per informazioni sui nodi del driver e degli esecutori dell'applicazione Spark.
In questa pagina sono riportate informazioni importanti, tra cui il numero di core e il numero di attività eseguite su ciascun executor.
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 Tez (consulta 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 della cronologia dei job Hive e Pig generati nell'istanza Bigtable specificata per il recupero e la visualizzazione nell'interfaccia web di Tez in esecuzione sul
server PHS.
Interfaccia web di YARN Application Timeline V2
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 della cronologia dei job generati nell'istanza Bigtable specificata per il recupero e
la visualizzazione nell'interfaccia web di YARN Application Timeline Service in esecuzione sul
server PHS. I job Dataproc sono elencati nella scheda Attività flusso
dell'interfaccia web.
Configurare Yarn Timeline Service v2
Per configurare la versione 2 di Yarn Timeline Service, configura un'istanza Bigtable e, se necessario, controlla i ruoli dell'account di servizio, come segue:
Controlla i ruoli dell'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 YARN Timeline. Se crei il tuo job o il tuo cluster PHS con un account di servizio VM personalizzato, l'account deve disporre del ruolo
Administrator
oBigtable User
di Bigtable.
Schema tabella obbligatorio
Il supporto di PHS di Dataproc 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 da puntare all'istanza 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 di Bigtable
Puoi configurare la garbage collection Bigtable in base alla data di creazione per le tabelle ATSv2:
Installa cbt, (inclusa la creazione del
.cbrtc file
).Crea il criterio di garbage collection basato sull'età di ATSv2:
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
.