Server di cronologia permanente Dataproc

Panoramica

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

  • File della cronologia dei job MapReduce e Spark

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

  • File di dati della sequenza temporale 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 della cronologia dei job Spark e MapReduce , i file della cronologia dei job Flink e i file di log YARN scritti in Cloud Storage durante la durata dei cluster di job Dataproc.

Limitazioni

  • La versione immagine del cluster PHS e la versione immagine dei cluster di job Dataproc devono corrispondere. Ad esempio, puoi utilizzare un cluster PHS con la versione immagine di Dataproc 2.0 per visualizzare i file della cronologia dei job eseguiti sui cluster di job con la versione immagine di 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.

Creare 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 di 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 si troverà il cluster PHS.
  • --single-node: un cluster PHS è un cluster Dataproc a nodo singolo.
  • --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.
  • (Facoltativo) Aggiungi il --image-version flag per specificare la versione 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 a PHS di trovare più directory nel bucket specificato scritte da diversi cluster di job (ma vedi Considerazioni sull'efficienza dei caratteri jolly).
    • Nei seguenti esempi vengono mostrati flag --properties separati per facilitare la lettura. La prassi consigliata quando si utilizza gcloud dataproc clusters create per creare un cluster Dataproc su Compute Engine è utilizzare un flag --properties per specificare un elenco di 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 località 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 abilitare la cronologia permanente dei job Spark. Questa proprietà specifica la località in cui PHS accederà ai log della cronologia dei job Spark scritti dai cluster di job.

      Nei cluster Dataproc 2.0+, devono essere impostate anche le due proprietà seguenti per abilitare i log della cronologia di Spark PHS (vedi Opzioni di configurazione del server di cronologia Spark). Il valore spark.history.custom.executor.log.url è un valore letterale che contiene {{PLACEHOLDERS}} 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 abilitare la cronologia permanente dei job MapReduce. Questa proprietà specifica la località 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 nelle interfacce web YARN Application Timeline Service 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 HistoryServer di Flink in modo da 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
    

Creare 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 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 i job Flink sul cluster.
  • PROPERTIES: aggiungi una o più delle seguenti proprietà del cluster per impostare località di 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 a PHS di trovare più directory nel bucket specificato scritte da diversi cluster di job (ma vedi Considerazioni sull'efficienza dei caratteri jolly).
    • Nei seguenti esempi vengono mostrati flag --properties separati per facilitare la lettura. La prassi consigliata quando si utilizza gcloud dataproc clusters create per creare un cluster Dataproc su Compute Engine è utilizzare un flag --properties per specificare un elenco di 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 sui cluster di job Dataproc e vengono 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 della cronologia dei job Spark vengono salvati nel temp bucket nella directory /spark-job-history. Puoi aggiungere queste proprietà per specificare località di Cloud Storage diverse 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 della cronologia dei job MapReduce vengono salvati nel temp bucket del cluster nelle directory /mapreduce-job-history/done e /mapreduce-job-history/intermediate-done. La località intermedia mapreduce.jobhistory.intermediate-done-dir è uno spazio di archiviazione temporaneo; i file intermedi vengono spostati nella mapreduce.jobhistory.done-dir località al termine del job MapReduce. Puoi aggiungere queste proprietà per specificare località 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: questa proprietà si applica ai cluster con versione immagine 2.0 e 2.1 che utilizzano la versione del connettore Cloud Storage 2.0.x (la versione del connettore predefinita per i cluster con versione immagine 2.0 e 2.1). Controlla il modo in cui i job Spark inviano i dati a Cloud Storage. L'impostazione predefinita è BASIC, che invia i dati a Cloud Storage al termine del job. Se impostato su FLUSHABLE_COMPOSITE, i dati vengono copiati in Cloud Storage a intervalli regolari durante l'esecuzione del job, come impostato da spark:spark.history.fs.gs.outputstream.sync.min.interval.ms.
      --properties=spark:spark.history.fs.gs.outputstream.type=FLUSHABLE_COMPOSITE
      
    • spark:spark.history.fs.gs.outputstream.sync.min.interval.ms: Questa proprietà si applica ai cluster con versione immagine 2.0 e 2.1 che utilizzano la versione del connettore Cloud Storage 2.0.x (la versione del connettore predefinita per i cluster con versione immagine 2.0 e 2.1). Controlla la frequenza in millisecondi con cui i dati vengono trasferiti a Cloud Storage quando spark:spark.history.fs.gs.outputstream.type è impostato su FLUSHABLE_COMPOSITE. L'intervallo di tempo predefinito è 5000ms. Il valore dell'intervallo di tempo in millisecondi può essere specificato con o senza l'aggiunta del ms suffisso.
      --properties=spark:spark.history.fs.gs.outputstream.sync.min.interval.ms=INTERVALms
      
    • spark:spark.history.fs.gs.outputstream.sync.min.interval: questa proprietà si applica ai cluster con versione immagine 2.2 e successive che utilizzano la versione del connettore Cloud Storage 3.0.x (la versione del connettore predefinita per i cluster con versione immagine 2.2). Sostituisce la proprietà precedente spark:spark.history.fs.gs.outputstream.sync.min.interval.ms e supporta i valori con suffisso temporale, come ms, s e m. Controlla la frequenza con cui i dati vengono trasferiti a Cloud Storage quando spark:spark.history.fs.gs.outputstream.type è impostato su FLUSHABLE_COMPOSITE.
      --properties=spark:spark.history.fs.gs.outputstream.sync.min.interval=INTERVAL
      
    • 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 la visualizzazione nelle interfacce web YARN Application Timeline Service V2 e Tez del cluster PHS. 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: JobManager di Flink archivia i job Flink completati caricando le informazioni dei job archiviati in una directory del 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
      

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:

  1. Crea un cluster PHS.

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

  1. Crea un cluster PHS.

  2. Seleziona o specifica il cluster PHS quando crei un cluster virtuale Dataproc su GKE.

Interfacce web del gateway dei componenti

Nella Google Cloud console, 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 del 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 del server di cronologia Spark che visualizza 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 la località 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

Puoi elencare i job per nome dell'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à):

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

Gli utenti possono inserire un termine di nome di app o 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 degli 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 ulteriormente suddivise in più fasi. Ogni fase può avere più attività, che vengono eseguite sui nodi executor (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'applicazione.

  • Fai clic su un job per aprire una pagina Dettagli job con un grafico aciclico diretto (DAG) 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 le metriche per le attività all'interno della fase. Puoi utilizzare questa pagina per risolvere i problemi relativi alle attività bloccate, ai ritardi dello scheduler e agli errori di esaurimento della memoria. Il visualizzatore DAG mostra la riga di codice da cui deriva la fase, aiutandoti a risalire al codice per risolvere i problemi.

  • Fai clic sulla scheda Executor per informazioni sui nodi driver ed executor dell'applicazione Spark.

    Le informazioni importanti in questa pagina includono il numero di core e il numero di attività eseguite su ogni 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.

Se hai configurato Yarn Timeline 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 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 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 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à di flusso nell'interfaccia web.

Configurare Yarn Timeline Service v2

Per configurare Yarn Timeline Service v2, configura un'istanza Bigtable e, se necessario, controlla i ruoli del service account, come segue:

  1. Crea un'istanza Bigtable.

  2. Controlla i ruoli del service account, se necessario. Il service account VM predefinito utilizzato dalle VM del cluster Dataproc dispone delle autorizzazioni necessarie per creare e configurare l'istanza Bigtable per YARN Timeline Service. Se crei il job o il cluster PHS con un service account VM personalizzato, l'account deve avere il ruolo Bigtable Administrator o Bigtable User.

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 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 di Bigtable basata sull'età per le tabelle ATSv2:

  • Installa cbt, (inclusa la creazione del .cbrtc file).

  • Crea la policy di garbage collection basata 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.