Vista geral
O servidor de histórico persistente (PHS) do Dataproc fornece interfaces Web para ver o histórico de tarefas para tarefas executadas em clusters do Dataproc ativos ou eliminados. Está disponível na versão 1.5 da imagem do Dataproc e posteriores, e é executado num cluster do Dataproc de nó único. Fornece interfaces Web para os seguintes ficheiros e dados:
Ficheiros do histórico de tarefas do MapReduce e do Spark
Ficheiros do histórico de tarefas do Flink (consulte o componente Flink opcional do Dataproc para criar um cluster do Dataproc para executar tarefas do Flink)
Ficheiros de dados da Linha cronológica da aplicação criados pelo YARN Timeline Service v2 e armazenados numa instância do Bigtable.
Registos de agregação do YARN

O servidor de histórico persistente acede e apresenta ficheiros do histórico de tarefas do Spark e do MapReduce, ficheiros do histórico de tarefas do Flink e ficheiros de registo do YARN escritos no Cloud Storage durante o ciclo de vida dos clusters de tarefas do Dataproc.
Limitações
A versão da imagem do cluster PHS e a versão da imagem dos clusters de tarefas do Dataproc têm de corresponder. Por exemplo, pode usar um cluster PHS da versão de imagem 2.0 do Dataproc para ver ficheiros do histórico de tarefas de tarefas executadas na versão de imagem 2.0 do Dataproc que estavam localizadas no projeto onde o cluster PHS está localizado.
Um cluster PHS não suporta o Kerberos e a autenticação pessoal.
Crie um cluster PHS do Dataproc
Pode executar o seguinte comando
gcloud dataproc clusters create
num terminal local ou no
Cloud Shell com as seguintes flags e
propriedades do cluster
para criar um cluster de nó único do servidor de histórico persistente do Dataproc.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT \ --region=REGION \ --single-node \ --enable-component-gateway \ --optional-components=COMPONENT \ --properties=PROPERTIES
- CLUSTER_NAME: especifique o nome do cluster do PHS.
- PROJECT: especifique o projeto a associar ao cluster do PHS. Este projeto deve ser o mesmo que o projeto associado ao cluster que executa os seus trabalhos (consulte o artigo Crie um cluster de trabalhos do Dataproc).
- REGION: especifique uma região do Compute Engine onde o cluster PHS vai estar localizado.
--single-node
: um cluster PHS é um cluster de nó único do Dataproc.--enable-component-gateway
: Esta flag ativa as interfaces Web do Component Gateway no cluster PHS.- COMPONENT: use esta flag para instalar um ou mais
componentes opcionais
no cluster. Tem de especificar o componente
FLINK
opcional para executar o serviço Web HistoryServer do Flink no cluster PHS para ver os ficheiros do histórico de tarefas do Flink. - PROPERTIES. Especifique uma ou mais propriedades de cluster.
Opcionalmente, adicione a flag --image-version para especificar a versão da imagem do cluster do PHS. A versão da imagem do PHS tem de corresponder à versão da imagem dos clusters de tarefas do Dataproc. Consulte as Limitações.
Notas:
- Os exemplos de valores de propriedades nesta secção usam um caráter universal "*" para permitir que o PHS corresponda a vários diretórios no contentor especificado escritos por diferentes clusters de tarefas (mas consulte as considerações sobre a eficiência dos carateres universais).
- Nos exemplos seguintes, são apresentadas flags
--properties
separadas para facilitar a leitura. A prática recomendada quando usagcloud dataproc clusters create
para criar um cluster do Dataproc no Compute Engine é usar uma flag--properties
para especificar uma lista de propriedades separadas por vírgulas (consulte a formatação das propriedades do cluster).
Propriedades:
yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/*/yarn-logs
: Adicione esta propriedade para especificar a localização do Cloud Storage onde o PHS acede aos registos do YARN escritos por clusters de tarefas.spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history
: Adicione esta propriedade para ativar o histórico de tarefas do Spark persistente. Esta propriedade especifica a localização onde o PHS acede aos registos do histórico de tarefas do Spark escritos por clusters de tarefas.Nos clusters do Dataproc 2.0 ou superior, também tem de definir as duas propriedades seguintes para ativar os registos do histórico do Spark do PHS (consulte as opções de configuração do servidor de histórico do Spark). O valor
spark.history.custom.executor.log.url
é um valor literal que contém {{PLACEHOLDERS}} para variáveis que vão ser definidas pelo servidor de histórico persistente. Estas variáveis não são definidas pelos utilizadores; transmita o valor da propriedade conforme apresentado.--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
: Adicione esta propriedade para ativar o histórico de tarefas do MapReduce persistente. Esta propriedade especifica a localização do Cloud Storage onde o PHS acede aos registos do histórico de tarefas do MapReduce escritos por clusters de tarefas.dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id
: Depois de configurar o serviço de cronologia do Yarn v2, adicione esta propriedade para usar o cluster PHS para ver os dados da cronologia nas interfaces Web do serviço de cronologia de aplicações do YARN V2 e do Tez (consulte as interfaces Web do gateway de componentes).flink:historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs
: Use esta propriedade para configurar o FlinkHistoryServer
de modo a monitorizar uma lista de diretórios separados por vírgulas.
Exemplos de propriedades:
--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
Crie um cluster de tarefas do Dataproc
Pode executar o seguinte comando num terminal local ou no Cloud Shell para criar um cluster de tarefas do Dataproc que executa tarefas e escreve ficheiros do histórico de tarefas num servidor de histórico persistente (PHS).
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT \ --region=REGION \ --optional-components=COMPONENT \ --enable-component-gateway \ --properties=PROPERTIES \ other args ...
- CLUSTER_NAME: especifique o nome do cluster de tarefas.
- PROJECT: especifique o projeto associado ao cluster de tarefas.
- REGION: especifique a região do Compute Engine onde o cluster de tarefas vai estar localizado.
--enable-component-gateway
: este indicador ativa as interfaces Web do Component Gateway no cluster de tarefas.- COMPONENT: use esta flag para instalar um ou mais
componentes opcionais
no cluster. Especifique o
FLINK
componente opcional para executar tarefas do Flink no cluster. PROPERTIES: adicione uma ou mais das seguintes propriedades do cluster para definir localizações do Cloud Storage não predefinidas relacionadas com o PHS e outras propriedades do cluster de tarefas.
Notas:
- Os exemplos de valores de propriedades nesta secção usam um caráter universal "*" para permitir que o PHS corresponda a vários diretórios no contentor especificado escritos por diferentes clusters de tarefas (mas consulte as considerações sobre a eficiência dos carateres universais).
- Nos exemplos seguintes, são apresentadas flags
--properties
separadas para facilitar a leitura. A prática recomendada quando usagcloud dataproc clusters create
para criar um cluster do Dataproc no Compute Engine é usar uma flag--properties
para especificar uma lista de propriedades separadas por vírgulas (consulte a formatação das propriedades do cluster).
Propriedades:
yarn:yarn.nodemanager.remote-app-log-dir
: Por predefinição, os registos YARN agregados são ativados em clusters de tarefas do Dataproc e escritos no contentor temporário do cluster. Adicione esta propriedade para especificar uma localização do Cloud Storage diferente onde o cluster vai escrever registos de agregação para acesso pelo servidor de histórico 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
: Por predefinição, os ficheiros do histórico de tarefas do Spark são guardados no clustertemp bucket
no diretório/spark-job-history
. Pode adicionar estas propriedades para especificar diferentes localizações do Cloud Storage para estes ficheiros. Se forem usadas ambas as propriedades, têm de apontar para diretórios no mesmo contentor.--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
: Por predefinição, os ficheiros do histórico de tarefas do MapReduce são guardados no clustertemp bucket
nos diretórios/mapreduce-job-history/done
e/mapreduce-job-history/intermediate-done
. A localizaçãomapreduce.jobhistory.intermediate-done-dir
intermédia é um armazenamento temporário. Os ficheiros intermédios são movidos para a localizaçãomapreduce.jobhistory.done-dir
quando a tarefa MapReduce é concluída. Pode adicionar estas propriedades para especificar localizações diferentes do Cloud Storage para estes ficheiros. Se forem usadas ambas as propriedades, têm de apontar para diretórios no mesmo contentor.--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
: esta propriedade aplica-se a clusters de versões de imagens2.0
e2.1
que usam a versão2.0.x
do conetor do Cloud Storage (a versão do conetor predefinida para clusters de versões de imagens2.0
e2.1
). Controla a forma como as tarefas do Spark enviam dados para o Cloud Storage. A predefinição éBASIC
, que envia dados para o Cloud Storage após a conclusão da tarefa. Quando definido comoFLUSHABLE_COMPOSITE
, os dados são copiados para o Cloud Storage a intervalos regulares enquanto a tarefa está em execução, conforme definido porspark: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
: Esta propriedade aplica-se a clusters de versões de imagens2.0
e2.1
que usam a versão2.0.x
do conetor do Cloud Storage (a versão do conetor predefinida para clusters de versões de imagens2.0
e2.1
). Controla a frequência em milissegundos com que os dados são transferidos para o Cloud Storage quandospark:spark.history.fs.gs.outputstream.type
está definido comoFLUSHABLE_COMPOSITE
. O intervalo de tempo predefinido é5000ms
. Pode especificar o valor do intervalo de tempo em milissegundos com ou sem o sufixoms
.--properties=spark:spark.history.fs.gs.outputstream.sync.min.interval.ms=INTERVALms
spark:spark.history.fs.gs.outputstream.sync.min.interval
: Esta propriedade aplica-se a clusters da versão de imagem2.2
e posteriores que usam a versão3.0.x
do conetor do Cloud Storage (a versão do conetor predefinida para clusters da versão de imagem2.2
). Substitui a propriedadespark:spark.history.fs.gs.outputstream.sync.min.interval.ms
anterior e suporta valores com sufixo de tempo, comoms
,s
em
. Controla a frequência com que os dados são transferidos para o Cloud Storage quandospark:spark.history.fs.gs.outputstream.type
está definido comoFLUSHABLE_COMPOSITE
.--properties=spark:spark.history.fs.gs.outputstream.sync.min.interval=INTERVAL
dataproc:yarn.atsv2.bigtable.instance
: Depois de configurar o serviço de cronologia do Yarn v2, adicione esta propriedade para escrever dados da cronologia do YARN na instância do Bigtable especificada para visualização no cluster do PHS YARN Application Timeline Service V2 e nas interfaces Web do Tez. Nota: a criação do cluster falha se a instância do Bigtable não existir.--properties=dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id
flink:jobhistory.archive.fs.dir
: O Flink JobManager arquiva os trabalhos do Flink concluídos carregando informações de trabalhos arquivadas para um diretório do sistema de ficheiros. Use esta propriedade para definir o diretório de arquivo emflink-conf.yaml
.--properties=flink:jobmanager.archive.fs.dir=gs://bucket-name/job-cluster-1/flink-job-history/completed-jobs
Use o PHS com cargas de trabalho em lote do Spark
Para usar o servidor de histórico persistente com o Dataproc sem servidor para cargas de trabalho em lote do Spark:
Selecione ou especifique o cluster PHS quando enviar uma carga de trabalho em lote do Spark.
Use o PHS com o Dataproc no Google Kubernetes Engine
Para usar o servidor de histórico persistente com o Dataproc no GKE:
Selecione ou especifique o cluster do PHS quando criar um cluster virtual do Dataproc no GKE.
Interfaces Web do gateway de componentes
Na Google Cloud consola, na página Dataproc Clusters, clique no nome do cluster do PHS para abrir a página Detalhes do cluster. No separador Interfaces Web, selecione os links do gateway de componentes para abrir as interfaces Web em execução no cluster do PHS.
Google Cloud
Interface Web do Spark History Server
A captura de ecrã seguinte mostra a interface Web do Spark History Server a apresentar links
para tarefas do Spark executadas em job-cluster-1 e job-cluster-2 após a configuração
das localizações spark.history.fs.logDirectory
e spark:spark.eventLog.dir
dos clusters de tarefas e spark.history.fs.logDirectory
do cluster do PHS da seguinte forma:
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 |

Pesquisa do nome da app
Pode listar tarefas por nome da app na interface Web do Spark History Server introduzindo um nome da app na caixa de pesquisa. O nome da app pode ser definido de uma das seguintes formas (indicadas por prioridade):
- Definido no código da aplicação ao criar o contexto do Spark
- Definida pela propriedade spark.app.name quando a tarefa é enviada
- Definido pelo Dataproc para o nome completo do recurso REST para a tarefa (
projects/project-id/regions/region/jobs/job-id
)
Os utilizadores podem introduzir um termo de nome de app ou recurso na caixa Pesquisar para encontrar e listar trabalhos.

Registos de eventos
A interface Web do Spark History Server disponibiliza um botão Registo de eventos no qual pode clicar para transferir registos de eventos do Spark. Estes registos são úteis para examinar o ciclo de vida da aplicação Spark.
Empregos de Spark
As aplicações Spark são divididas em vários trabalhos, que são ainda divididos em várias fases. Cada fase pode ter várias tarefas, que são executadas em nós de execução (trabalhadores).

Clique num ID da app Spark na interface Web para abrir a página Spark Jobs, que apresenta uma cronologia de eventos e um resumo dos trabalhos na aplicação.
Clique num trabalho para abrir uma página de detalhes do trabalho com um gráfico acíclico dirigido (DAG) e um resumo das fases do trabalho.
Clique numa fase ou use o separador Fases para selecionar uma fase e abrir a página Detalhes da fase.
Os detalhes da fase incluem uma visualização DAG, uma cronologia de eventos e métricas para as tarefas na fase. Pode usar esta página para resolver problemas relacionados com tarefas restritas, atrasos do programador e erros de falta de memória. O visualizador de DAG mostra a linha de código a partir da qual a fase é derivada, o que ajuda a rastrear problemas até ao código.
Clique no separador Executors para ver informações sobre os nós de controlador e executor da aplicação Spark.
As informações importantes nesta página incluem o número de núcleos e o número de tarefas que foram executadas em cada executor.
Interface Web do Tez
O Tez é o motor de execução predefinido para o Hive e o Pig no Dataproc. O envio de uma tarefa do Hive num cluster de tarefas do Dataproc inicia uma aplicação Tez.
Se configurou o serviço de cronologia do Yarn v2
e definiu a propriedade dataproc:yarn.atsv2.bigtable.instance
quando
criou os clusters de tarefas do PHS e do Dataproc, o YARN escreve
dados da cronologia de tarefas do Hive e do Pig gerados na instância do Bigtable especificada para obtenção e apresentação na interface Web do Tez em execução no servidor do PHS.

Interface Web da cronologia de aplicações do YARN V2
Se configurou o serviço da Linha cronológica do Yarn v2
e definiu a propriedade dataproc:yarn.atsv2.bigtable.instance
quando
criou os clusters de tarefas do PHS e do Dataproc, o YARN escreve
dados da linha cronológica de tarefas gerados na instância do Bigtable especificada para obtenção e
apresentação na interface Web do serviço da Linha cronológica de aplicações do YARN em execução no
servidor do PHS. As tarefas do Dataproc são apresentadas no separador Atividade de fluxo
na interface Web.

Configure o serviço de cronologia do Yarn v2
Para configurar o serviço Yarn Timeline v2, configure uma instância do Bigtable e, se necessário, verifique as funções da conta de serviço da seguinte forma:
Verifique as funções da conta de serviço, se necessário. A conta de serviço da VM predefinida usada pelas VMs do cluster do Dataproc tem as autorizações necessárias para criar e configurar a instância do Bigtable para o serviço de cronologia do YARN. Se criar o seu cluster de PHS ou de tarefas com uma conta de serviço de VM personalizada, a conta tem de ter a função Bigtable
Administrator
ouBigtable User
.
Esquema da tabela obrigatório
O suporte do PHS do Dataproc para o
YARN Timeline Service v2
requer um esquema específico criado na instância do Bigtable. O Dataproc cria o esquema necessário quando um cluster de tarefas ou um cluster PHS é criado com a propriedade dataproc:yarn.atsv2.bigtable.instance
definida para apontar para a instância do Bigtable.
Segue-se o esquema da instância do Bigtable necessário:
Tabelas | Famílias de colunas |
---|---|
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 |
Recolha de lixo do Bigtable
Pode configurar a recolha de lixo do Bigtable com base na idade para tabelas do ATSv2:
Instale o cbt, (incluindo a criação do
.cbrtc file
).Crie a política de recolha de lixo com base na idade do 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}
Notas:
NUMBER_OF_DAYS: o número máximo de dias é 30d
.