Server di cronologia permanente di Dataproc

Panoramica

Il server di cronologia permanente di Dataproc (PHS) fornisce interfacce web per visualizzare la cronologia dei job eseguiti su cluster Dataproc attivi o eliminati. È disponibile nella versione 1.5 e successive di Dataproc e viene eseguita su un cluster Dataproc a nodo singolo. Fornisce interfacce web ai seguenti file e dati:

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 per tutta la durata dei cluster di job Dataproc.

Limitazioni

  • Un cluster Dataproc PHS consente di visualizzare i file di cronologia dei job solo dei job Dataproc eseguiti nel progetto in cui si trova il cluster PHS. Inoltre, 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 immagine Dataproc 2.0 per visualizzare i file di cronologia dei job eseguiti su cluster di job in versione 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.

Creazione di un cluster Dataproc PHS

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 di Dataproc Persistent History Server.

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 al progetto associato al cluster che esegue i job (vedi 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 del 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 immagine PHS deve corrispondere alla versione immagine dei cluster di job Dataproc. Vedi Limitazioni.

    Note:

    • Gli esempi di valori delle proprietà in questa sezione utilizzano un carattere jolly "*" per consentire al PHS di corrispondere a più directory nel bucket specificato scritte da diversi cluster di job (ma consulta Considerazioni sull'efficienza dei caratteri jolly).
    • Negli esempi seguenti vengono mostrati flag --properties separati per favorire la leggibilità. Quando si utilizza gcloud dataproc clusters create per creare un cluster Dataproc su Compute Engine, si consiglia di utilizzare un flag --properties per specificare un elenco di proprietà separate da virgole (consulta la pagina relativa alla formattazione delle proprietà 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 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 abilitare 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 Spark PHS (vedi Opzioni di configurazione del server di cronologia Spark). Il valore spark.history.custom.executor.log.url è un valore letterale che contiene {{SEGNAPOSTI}} per le variabili che verranno impostate dal server di cronologia permanente. Queste variabili non sono 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 abilitare la cronologia dei job MapReduce permanente. Questa proprietà specifica la posizione di Cloud Storage in cui il 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 il servizio Spostamenti dell'applicazione v2, aggiungi questa proprietà per utilizzare il cluster PHS per visualizzare i dati della sequenza temporale sul servizio Spostamenti dell'applicazione YARN V2 e sulle interfacce web di Tez (vedi Interfacce web del gateway dei componenti).

    • flink:historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs: utilizza questa proprietà per configurare l'Flink HistoryServer per monitorare un elenco di directory separate 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 comando seguente in un terminale locale o in Cloud Shell per creare un cluster di job Dataproc che esegue job e scrive i file di cronologia dei job su 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 di Compute Engine in cui si troverà il cluster di job.
  • --enable-component-gateway: questo flag abilita le interfacce web del gateway dei componenti sul 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 località 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 corrispondere a più directory nel bucket specificato scritte da diversi cluster di job (ma consulta Considerazioni sull'efficienza dei caratteri jolly).
    • Negli esempi seguenti vengono mostrati flag --properties separati per favorire la leggibilità. Quando si utilizza gcloud dataproc clusters create per creare un cluster Dataproc su Compute Engine, si consiglia di utilizzare un flag --properties per specificare un elenco di proprietà separate da virgole (consulta la pagina relativa alla formattazione delle proprietà cluster).

    Proprietà:

    • yarn:yarn.nodemanager.remote-app-log-dir: Per impostazione predefinita, i log YARN aggregati sono abilitati sui cluster dei job Dataproc e scritti nel bucket temporaneo del cluster. Aggiungi questa proprietà per specificare una località di 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 e spark:spark.eventLog.dir: per impostazione predefinita, i file di cronologia dei job Spark vengono salvati nel cluster temp 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 e mapred:mapreduce.jobhistory.intermediate-done-dir: per impostazione predefinita, i file di cronologia dei job MapReduce vengono salvati nel cluster temp bucket nelle directory /mapreduce-job-history/done e /mapreduce-job-history/intermediate-done. La posizione intermedia mapreduce.jobhistory.intermediate-done-dir è l'archiviazione temporanea; i file intermedi vengono spostati nella posizione mapreduce.jobhistory.done-dir al completamento del job MapReduce. Puoi aggiungere queste proprietà per specificare posizioni di 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 e spark: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 dati a Cloud Storage. Il valore predefinito spark:spark.history.fs.gs.outputstream.type è BASIC, che invia dati a Cloud Storage dopo il completamento del job. Puoi cambiare questa impostazione in FLUSHABLE_COMPOSITE per modificare il comportamento di svuotamento e copiare i dati in Cloud Storage a intervalli regolari mentre il job è in esecuzione.
      --properties=spark:spark.history.fs.gs.outputstream.type=FLUSHABLE_COMPOSITE
      
      Il valore predefinito di 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 con un intervallo di tempo ms diverso:
      --properties=spark:spark.history.fs.gs.outputstream.sync.min.interval.ms=intervalms
      
      Nota: per impostare queste proprietà, la versione immagine del cluster di job Dataproc deve utilizzare il connettore Cloud Storage versione 2.2.0 o successive. Puoi controllare la versione del connettore installata sulle versioni delle immagini nella pagina Elenco delle versioni delle immagini Dataproc.
    • dataproc:yarn.atsv2.bigtable.instance: dopo aver configurato il servizio Spostamenti dell'applicazione v2, aggiungi questa proprietà per scrivere i dati della sequenza temporale YARN nell'istanza di Bigtable specificata per la visualizzazione sulle interfacce web YARN Application Spostamenti Service V2 e Tez. 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: gli archivi di Flink JobManager hanno completato i job Flink caricando le informazioni sui job archiviate in una directory di file system. Utilizza questa proprietà per impostare la directory di archivio in flink-conf.yaml.
      --properties=flink:jobmanager.archive.fs.dir=gs://bucket-name/job-cluster-1/flink-job-history/completed-jobs
      

Usa PHS con carichi di lavoro batch Spark

Per utilizzare il server di cronologia permanente con Dataproc Serverless per i carichi di lavoro batch Spark:

  1. Crea un cluster PHS.

  2. 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:

  1. Crea un cluster PHS.

  2. Seleziona o specifica il cluster PHS durante la creazione di un cluster virtuale Dataproc su GKE.

Interfacce web del gateway dei componenti

Nella console Google Cloud, dalla pagina Cluster di Dataproc, fai clic sul nome del cluster PHS per aprire la pagina Dettagli cluster. Nella scheda Interfacce web, seleziona i link Gateway dei componenti per aprire le interfacce web in esecuzione nel cluster PHS.

Interfaccia web di Spark History Server

Il seguente screenshot 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 la configurazione delle località spark.history.fs.logDirectory dei cluster di job spark.history.fs.logDirectory, spark:spark.eventLog.dir e dei cluster PHS 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

Puoi elencare i job per nome app nell'interfaccia web del server di Spark History inserendo il nome di un'app nella casella di ricerca. Il nome dell'app può essere impostato in uno dei seguenti modi (elencati in base alla priorità):

  1. Impostato all'interno del codice dell'applicazione durante la creazione del contesto Spark
  2. Impostato dalla proprietà spark.app.name quando viene inviato il job
  3. 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 per il nome di un'app o una risorsa nella casella Cerca per trovare ed elencare i job.

Log eventi

L'interfaccia web di Spark History Server 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 suddivisa in più fasi. Ogni fase può avere più attività, che vengono eseguite sui nodi esecutori (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 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 e aprire la pagina Dettagli fase.

    I dettagli della fase includono una visualizzazione DAG, una sequenza temporale degli eventi e metriche per le attività nella fase. Puoi utilizzare 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, per aiutarti a tenere traccia dei problemi nel codice.

  • Fai clic sulla scheda Esecutori per informazioni sui nodi driver ed esecutore 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 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 (vedi Utilizzo di Apache Hive su Dataproc ).

Se hai configurato la sequenza temporale di Yarn 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 sequenza temporale dei job Hive e Pig generati nell'istanza Bigtable specificata per il recupero e la visualizzazione sull'interfaccia web Tez in esecuzione sul server PHS.

Interfaccia web YARN Application Spostamenti V2

Se hai configurato Yarn Spostamenti Service v2 e impostato la proprietà dataproc:yarn.atsv2.bigtable.instance quando hai creato i cluster di job PHS e Dataproc, YARN scrive i dati della sequenza temporale del job generati nell'istanza Bigtable specificata per il recupero e la visualizzazione sull'interfaccia web del servizio YARN Application Spostamenti in esecuzione sul server PHS. I job Dataproc sono elencati nella scheda Attività di flusso dell'interfaccia web.

Configura servizio cronologia Yarn v2

Per configurare Yarn Spostamenti Service v2, imposta un'istanza Bigtable e, se necessario, controlla i ruoli dell'account di servizio, come segue:

  1. Crea un'istanza Bigtable.

  2. Controlla i ruoli dell'account di servizio, se necessario. L'account di servizio VM predefinito utilizzato dalle VM dei cluster Dataproc dispone delle autorizzazioni necessarie per creare e configurare l'istanza Bigtable per il servizio Spostamenti YARN. Se crei il tuo job o un cluster PHS con un account di servizio VM personalizzato, l'account deve avere il ruolo Bigtable Administrator o Bigtable User.

Schema della tabella obbligatorio

Il supporto di Dataproc PHS per YARN Spostamenti 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 di Bigtable.

Di seguito è riportato lo schema di 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 di Bigtable in base all'età per le tabelle ATSv2:

  • Installare 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.