Server di cronologia permanente di Dataproc

Panoramica

Dataproc Persistent History Server (PHS) fornisce interfacce web per visualizzare la cronologia dei job per i job eseguiti su cluster Dataproc attivi o eliminati. it è disponibile in Dataproc con immagine versione 1.5 e successive viene eseguito su un cluster Dataproc a nodo singolo. Offre interfacce web ai file e ai dati seguenti:

  • File di cronologia dei job MapReduce e Spark

  • Flink dei file di cronologia dei job (vedi Componente Flink facoltativo di Dataproc per creare un cluster Dataproc per eseguire job Flink)

  • I file di dati degli Spostamenti dell'applicazione creati da YARN Spostamenti v2 e archiviato in un'istanza Bigtable.

  • Log di aggregazione YARN

Il server di cronologia permanente accede e visualizza la cronologia dei job Spark e MapReduce file di cronologia dei job Flink e file di log YARN scritti in Cloud Storage per l'intera 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 il cluster PHS in cui viene localizzato. Inoltre, la versione dell'immagine del cluster PHS e Dataproc La versione dell'immagine dei cluster di job deve corrispondere. Ad esempio, puoi utilizzare Dataproc Cluster PHS con versione immagine 2.0 per visualizzare i file di cronologia dei job eseguiti i cluster di job della versione immagine Dataproc 2.0 che si trovavano nel progetto in cui si trova il cluster PHS.

  • Un cluster PHS non supporta Kerberos e Autenticazione personale.

Creazione di un cluster Dataproc PHS

Puoi eseguire le seguenti operazioni gcloud dataproc clusters create nel terminale locale o Cloud Shell con i seguenti flag e proprietà del cluster 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 il progetto deve essere uguale al progetto associato al cluster che esegue i tuoi job (vedi Creazione di 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 Dataproc cluster a nodo singolo.
  • --enable-component-gateway: questo flag abilita Gateway dei componenti web sul cluster PHS.
  • COMPONENT: utilizza questo flag per installare una o più componenti facoltativi sul cluster. Devi specificare il componente facoltativo FLINK per eseguire Flink HistoryServer sul cluster PHS da visualizzare Flink dei file di cronologia dei job.
  • PROPERTIES. Specifica uno o più proprietà del cluster.
  • Se vuoi, puoi aggiungere --image-version per specificare la versione dell'immagine del cluster PHS. La versione dell'immagine PHS deve corrisponda alla versione immagine dei cluster di job Dataproc. Consulta Limitazioni.

    Note:

    • Gli esempi di valori delle proprietà in questa sezione utilizzano l'asterisco "*" carattere jolly per consentire al file PHS di trovare più directory nel bucket specificato scritte da cluster di job diversi (ma vedi Considerazioni sull'efficienza dei caratteri jolly).
    • Nei seguenti esempi vengono mostrati flag --properties separati per la leggibilità degli annunci. La procedura consigliata quando si utilizza gcloud dataproc clusters create per creare un Dataproc su Compute Engine nel cluster utilizza un flag --properties per specificare un elenco proprietà separate da virgole (vedi 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 si trova il file 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 posizione 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, le due proprietà seguenti deve essere impostato anche 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 contiene {{SEGNAPOSTI}} per le variabili che saranno impostate dal server di cronologia permanente. Questi le variabili non siano impostate dagli utenti, passare 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 file 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 il tuo Configura il servizio di cronologia di Yarn v2, aggiungi questa proprietà per utilizzare il cluster PHS per visualizzare i dati della sequenza temporale in Servizio cronologia applicazione YARN V2 e 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 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 questo comando in un terminale locale o in Cloud Shell per creare Cluster di job Dataproc che esegue job e scrive i file di cronologia dei job in un server di cronologia permanente (PHS, Persistent History Server).

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 del job.
  • --enable-component-gateway: questo flag abilita Gateway dei componenti interfacce web sul cluster di job.
  • COMPONENT: utilizza questo flag per installare una o più componenti facoltativi sul cluster. Specifica il componente facoltativo FLINK per eseguire job Flink sul cluster.
  • PROPERTIES: aggiungi uno o più dei seguenti elementi proprietà del cluster per impostare località Cloud Storage non predefinite correlate a PHS e altre proprietà dei cluster di job.

    Note:

    • Gli esempi di valori delle proprietà in questa sezione utilizzano l'asterisco "*" carattere jolly per consentire al file PHS di trovare più directory nel bucket specificato scritte da cluster di job diversi (ma vedi Considerazioni sull'efficienza dei caratteri jolly).
    • Nei seguenti esempi vengono mostrati flag --properties separati per la leggibilità degli annunci. La procedura consigliata quando si utilizza gcloud dataproc clusters create per creare un Dataproc su Compute Engine nel cluster utilizza un flag --properties per specificare un elenco proprietà separate da virgole (vedi formattazione delle proprietà del cluster).

    Proprietà:

    • yarn:yarn.nodemanager.remote-app-log-dir: Per impostazione predefinita, i log YARN aggregati sono abilitati sul job Dataproc nei cluster e vengono scritte nel cluster bucket temporaneo. 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 entrambi devono puntare alle 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 nei /mapreduce-job-history/done e /mapreduce-job-history/intermediate-done . mapreduce.jobhistory.intermediate-done-dir (livello intermedio) la posizione è un'archiviazione temporanea. vengono spostati mapreduce.jobhistory.done-dir posizione al completamento del job MapReduce. Puoi aggiungere queste proprietà per specificare diversi elementi di Cloud Storage posizioni per questi file. Se vengono utilizzate entrambe le proprietà, queste devono puntare a 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 questi Connettore Cloud Storage proprietà per modificare il valore predefinito comportamento del cluster di job invia dati a Cloud Storage. Il valore predefinito di spark:spark.history.fs.gs.outputstream.type è BASIC, che invia dati a Cloud Storage al termine del job. Puoi cambiare questa impostazione in FLUSHABLE_COMPOSITE per modificare il comportamento di svuotamento e copiare i dati in Cloud Storage all'indirizzo a intervalli regolari mentre il job è in esecuzione.
      --properties=spark:spark.history.fs.gs.outputstream.type=FLUSHABLE_COMPOSITE
      
      Il valore predefinito per 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à, il cluster di job Dataproc dell'immagine deve utilizzare il connettore Cloud Storage versione 2.2.0 o successiva. Puoi verificare la versione del connettore installata sulle versioni immagine dal Pagina Elenco delle versioni immagine Dataproc.
    • dataproc:yarn.atsv2.bigtable.instance: dopo il tuo Configura il servizio di cronologia di Yarn v2, aggiungi questa proprietà per scrivere i dati della sequenza temporale YARN nell'URL Istanza Bigtable per la visualizzazione sul cluster PHS Interfacce web YARN Application Spostamenti Service V2 e Tez. Nota: la creazione del cluster non riuscirà se l'istanza Bigtable inesistenti.
      --properties=dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id
      
    • flink:jobhistory.archive.fs.dir: archivi di Flink JobManager job Flink completati 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

Come utilizzare il server di cronologia permanente con Dataproc Serverless per Carichi di lavoro batch Spark:

  1. Crea un cluster PHS.

  2. Seleziona o specifica il cluster PHS quando per 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 quando creare un cluster virtuale Dataproc su GKE.

Interfacce web del gateway dei componenti

Nella console Google Cloud, dall'interfaccia Nella pagina Cluster, fai clic sul nome del cluster PHS per aprire la pagina Dettagli cluster. Nella scheda Interfacce web, seleziona i link del gateway dei componenti per aprire le interfacce web in esecuzione sul cluster PHS.

Interfaccia web di Spark History Server

Il seguente screenshot mostra l'interfaccia web di Spark History Server e mostra i link ai job Spark eseguiti su job-cluster-1 e job-cluster-2 dopo l'impostazione i cluster di job spark.history.fs.logDirectory e spark:spark.eventLog.dir e le località spark.history.fs.logDirectory del 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
phs-cluster gs://example-cloud-storage-bucket/*/spark-job-history

Puoi elencare i job per nome app nell'interfaccia web Spark History Server 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à):

  1. Impostato all'interno del codice dell'applicazione durante la creazione del contesto Spark
  2. Impostato dal spark.app.name proprietà quando il job viene inviato
  3. Impostare da Dataproc sul nome completo della risorsa REST per job (projects/project-id/regions/region/jobs/job-id)

Gli utenti possono inserire un termine per il nome di un'app o di 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 che puoi fai clic per scaricare i log eventi Spark. Questi log sono utili per esaminare ciclo di vita dell'applicazione Spark.

Job Spark

Le applicazioni Spark sono suddivise in più job, che vengono ulteriormente suddivisi in più fasi. Ogni fase può avere più attività, che vengono eseguite nodi esecutori (worker).

  • Fai clic su un ID app Spark nell'interfaccia web per aprire la pagina dei job Spark, una sequenza temporale degli eventi e un riepilogo dei job nell'applicazione.

  • Fai clic su un job per aprire una pagina Dettagli job con un grafo diretto aciclico (DAG) e un riepilogo delle fasi del job.

  • Fai clic su una fase o utilizza la scheda Fasi per selezionare una fase e aprirla Pagina dei dettagli.

    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 relative ad attività strangolate, ritardi dello scheduler ed errori di esaurimento della memoria. La Il visualizzatore DAG mostra la riga di codice da cui deriva la fase, aiutandoti a far risalire i problemi al codice.

  • Fai clic sulla scheda Esecutori per ottenere informazioni nodi driver ed esecutori.

    Informazioni importanti su 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 dell'applicazione Tez (vedi Utilizzo di Apache Hive su Dataproc ).

Se hai configurato il servizio di cronologia di Yarn v2 e imposta la proprietà dataproc:yarn.atsv2.bigtable.instance quando ha creato i cluster di job PHS e Dataproc, YARN scrive hanno generato i dati della sequenza temporale dei job Hive e Pig nel Bigtable specificato per il recupero e la visualizzazione sull'interfaccia web di Tez in esecuzione Server PHS.

Interfaccia web YARN Application Spostamenti V2

Se hai configurato il servizio di cronologia di Yarn v2 e imposta la proprietà dataproc:yarn.atsv2.bigtable.instance quando ha creato i cluster di job PHS e Dataproc, YARN scrive generati dalla sequenza temporale del job all'istanza Bigtable specificata per il recupero e nell'interfaccia web del servizio di sequenza temporale delle applicazioni YARN in esecuzione Server PHS. I job Dataproc sono elencati in Attività di flusso nell'interfaccia web.

Configura servizio cronologia Yarn v2

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

  1. Crea un'istanza Bigtable.

  2. Controlla i ruoli dell'account di servizio, se necessario. Il valore predefinito Account di servizio VM utilizzate dalle VM dei cluster Dataproc dispone delle autorizzazioni necessarie per creare e configurare l'istanza Bigtable per il servizio di cronologia YARN. Se crei il tuo job o un cluster PHS con un un account di servizio VM personalizzato, l'account deve avere uno dei due Ruolo Bigtable Administrator o Bigtable User.

Schema della tabella obbligatorio

Supporto di Dataproc PHS per Servizio Spostamenti YARN v2 richiede uno schema specifico Bigtable. Dataproc crea le richieste quando viene creato un cluster di job o un cluster PHS con La proprietà dataproc:yarn.atsv2.bigtable.instance impostata per puntare a 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 Tabelle ATSv2:

  • Installa cbt, (inclusa la creazione dell'.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.