Este documento descreve as ferramentas e os ficheiros que pode usar para monitorizar e resolver problemas de cargas de trabalho em lote do Serverless para Apache Spark.
Resolva problemas de cargas de trabalho a partir da Google Cloud consola
Quando uma tarefa em lote falha ou tem um desempenho fraco, um primeiro passo recomendado é abrir a respetiva página de detalhes do lote a partir da página Lotes na Google Cloud consola.
Use o separador Resumo: o seu centro de resolução de problemas
O separador Resumo, que é selecionado por predefinição quando a página Detalhes do lote é aberta, apresenta métricas críticas e registos filtrados para ajudar a fazer uma avaliação inicial rápida do estado do lote. Após esta avaliação inicial, pode fazer uma análise mais detalhada através de ferramentas mais especializadas disponíveis na página Detalhes do lote, como a IU do Spark, o Explorador de registos e o Gemini Cloud Assist.
Destaques das métricas em lote
O separador Resumo na página Detalhes do lote inclui gráficos que apresentam valores importantes das métricas de carga de trabalho em lote. Os gráficos de métricas são preenchidos após a conclusão da análise e oferecem uma indicação visual de potenciais problemas, como contenção de recursos, distorção de dados ou pressão de memória.
A tabela seguinte apresenta as métricas de carga de trabalho do Spark apresentadas na página Detalhes do lote na consola Google Cloud e descreve como os valores das métricas podem fornecer estatísticas sobre o estado e o desempenho da carga de trabalho.
Métrica | O que mostra? |
---|---|
Métricas ao nível do executor | |
Rácio entre o tempo de GC da JVM e o tempo de execução | Esta métrica mostra a proporção do tempo de GC (recolha de lixo) da JVM em relação ao tempo de execução por executor. As taxas elevadas podem indicar fugas de memória em tarefas executadas em executores específicos ou estruturas de dados ineficientes, o que pode levar a uma elevada rotatividade de objetos. |
Bytes de disco derramados | Esta métrica mostra o número total de bytes de disco derramados em diferentes executores. Se um executor mostrar um elevado número de bytes derramados no disco, isto pode indicar uma distorção dos dados. Se a métrica aumentar ao longo do tempo, isso pode indicar que existem fases com pressão de memória ou fugas de memória. |
Bytes lidos e escritos | Esta métrica mostra os bytes escritos em comparação com os bytes lidos por executor. As grandes discrepâncias nos bytes lidos ou escritos podem indicar cenários em que as junções replicadas levam à amplificação de dados em executores específicos. |
Registos lidos e escritos | Esta métrica mostra os registos lidos e escritos por executor. Um grande número de registos lidos com um baixo número de registos escritos pode indicar um gargalo na lógica de processamento em executores específicos, o que leva à leitura de registos durante a espera. Os executores que atrasam consistentemente as leituras e as escritas podem indicar contenção de recursos nesses nós ou ineficiências de código específicas do executor. |
Rácio entre o tempo de escrita aleatória e o tempo de execução | A métrica mostra a quantidade de tempo que o executor passou no tempo de execução da aleatorização em comparação com o tempo de execução geral. Se este valor for elevado para alguns executores, pode indicar uma distorção de dados ou uma serialização de dados ineficiente. Pode identificar fases com tempos de gravação de mistura longos na IU do Spark. Procure tarefas atípicas nesses estágios que demorem mais do que o tempo médio a serem concluídas. Verifique se os executores com tempos de gravação aleatória elevados também mostram uma atividade de I/O do disco elevada. A serialização mais eficiente e os passos de partição adicionais podem ajudar. Um número muito elevado de gravações de registos em comparação com as leituras de registos pode indicar uma duplicação de dados não intencional devido a junções ineficientes ou transformações incorretas. |
Métricas ao nível da aplicação | |
Progressão de palcos | Esta métrica mostra o número de fases com falhas, em espera e em execução. Um grande número de fases com falhas ou em espera pode indicar uma distorção dos dados. Verifique se existem partições de dados e depure o motivo da falha da fase através do separador Fases na IU do Spark. |
Executores do Spark em lote | Esta métrica mostra o número de executores que podem ser necessários em comparação com o número de executores em execução. Uma grande diferença entre os executores necessários e os executores em execução pode indicar problemas de escalabilidade automática. |
Métricas ao nível da VM | |
Memória usada | Esta métrica mostra a percentagem de memória da MV em utilização. Se a percentagem principal for elevada, pode indicar que o controlador está sob pressão de memória. Para outros nós de VM, uma percentagem elevada pode indicar que os executores estão a ficar sem memória, o que pode levar a um excesso de dados no disco e a um tempo de execução da carga de trabalho mais lento. Use a IU do Spark para analisar executores e verificar se existem tempos de GC elevados e falhas de tarefas elevadas. Também depure o código Spark para a colocação em cache de conjuntos de dados grandes e a transmissão desnecessária de variáveis. |
Registos de tarefas
A página Detalhes do lote inclui uma secção Registos de tarefas que apresenta avisos e erros filtrados dos registos de tarefas (carga de trabalho em lote). Esta funcionalidade permite a identificação rápida de problemas críticos sem ter de analisar manualmente ficheiros de registo extensos. Pode selecionar uma Gravidade do registo (por exemplo, Error
) no menu pendente e adicionar um Filtro de texto para restringir os resultados. Para fazer uma análise mais detalhada, clique no ícone Ver no Explorador de registos
para abrir os registos em lote selecionados no Explorador de registos.

Exemplo: o Explorador de registos é aberto depois de escolher Errors
no seletor de gravidade na página Detalhes do lote na consola Google Cloud .
IU do Spark
A IU do Spark recolhe detalhes de execução do Apache Spark a partir de cargas de trabalho em lote do Serverless para Apache Spark. Não existe qualquer custo para a funcionalidade da IU do Spark, que está ativada por predefinição.
Os dados recolhidos pela funcionalidade da IU do Spark são retidos durante 90 dias. Pode usar esta interface Web para monitorizar e depurar cargas de trabalho do Spark sem ter de criar um servidor de histórico persistente.
Autorizações e funções da gestão de identidade e de acesso necessárias
São necessárias as seguintes autorizações para usar a funcionalidade da IU do Spark com cargas de trabalho em lote.
Autorização de recolha de dados:
dataproc.batches.sparkApplicationWrite
. Esta autorização tem de ser concedida à conta de serviço que executa cargas de trabalho em lote. Esta autorização está incluída na funçãoDataproc Worker
, que é concedida automaticamente à conta de serviço predefinida do Compute Engine que o Serverless para Apache Spark usa por predefinição (consulte a conta de serviço do Serverless para Apache Spark). No entanto, se especificar uma conta de serviço personalizada para a sua carga de trabalho em lote, tem de adicionar a autorizaçãodataproc.batches.sparkApplicationWrite
a essa conta de serviço (normalmente, concedendo à conta de serviço a funçãoWorker
do Dataproc).Autorização de acesso à IU do Spark:
dataproc.batches.sparkApplicationRead
. Esta autorização tem de ser concedida a um utilizador para aceder à IU do Spark naGoogle Cloud consola. Esta autorização está incluída nas funçõesDataproc Viewer
,Dataproc Editor
eDataproc Administrator
. Para abrir a IU do Spark na Google Cloud consola, tem de ter uma das seguintes funções ou uma função personalizada que inclua esta autorização.
Abra a IU do Spark
A página da IU do Spark está disponível nas Google Cloud cargas de trabalho em lote da consola.
Aceda à página Sessões interativas do Serverless para Apache Spark.
Clique num ID do lote para abrir a página Detalhes do lote.
Clique em Ver IU do Spark no menu superior.
O botão Ver IU do Spark está desativado nos seguintes casos:
- Se uma autorização obrigatória não for concedida
- Se desmarcar a caixa de verificação Ativar IU do Spark na página Detalhes do lote
- Se definir a propriedade
spark.dataproc.appContext.enabled
comofalse
quando envia uma carga de trabalho em lote
Registos do Apache Spark sem servidor
A registo está ativado por predefinição no Serverless para Apache Spark, e os registos de cargas de trabalho persistem após a conclusão de uma carga de trabalho. O Serverless para Apache Spark recolhe registos de cargas de trabalho no Cloud Logging.
Pode aceder aos registos do Serverless para Apache Spark no recurso Cloud Dataproc Batch
no Explorador de registos.
Consulte registos do Serverless para Apache Spark
O explorador de registos na Google Cloud consola fornece um painel de consultas para ajudar a criar uma consulta para examinar os registos de cargas de trabalho em lote. Seguem-se os passos que pode seguir para criar uma consulta para examinar os registos da carga de trabalho em lote:
- O seu projeto atual está selecionado. Pode clicar em Refinar projeto de âmbito para selecionar outro projeto.
Defina uma consulta de registos em lote.
Use os menus de filtros para filtrar uma carga de trabalho em lote.
Em Todos os recursos, selecione o recurso Cloud Dataproc Batch.
No painel Selecionar recurso, selecione o lote LOCATION e, de seguida, o ID DO LOTE. Estes parâmetros de lote estão listados na página Lotes do Dataproc na Google Cloud consola.
Clique em Aplicar.
Em Selecionar nomes de registos, introduza
dataproc.googleapis.com
na caixa Pesquisar nomes de registos para limitar os tipos de registos a consultar. Selecione um ou mais dos nomes de ficheiros de registo apresentados.
Use o editor de consultas para filtrar registos específicos da VM.
Especifique o tipo de recurso e o nome do recurso da VM, conforme mostrado no exemplo seguinte:
Notas:resource.type="cloud_dataproc_batch" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
- BATCH_UUID: o UUID do lote está listado na página de detalhes do lote na consola, que é aberta quando clica no ID do lote na página Lotes. Google Cloud
Os registos de lotes também indicam o UUID do lote no nome do recurso da VM. Segue-se um exemplo de um batch driver.log:
- BATCH_UUID: o UUID do lote está listado na página de detalhes do lote na consola, que é aberta quando clica no ID do lote na página Lotes. Google Cloud
Clique em Executar consulta.
Tipos de registos e consultas de exemplo do Serverless para Apache Spark
A lista seguinte descreve os diferentes tipos de registos do Serverless para Apache Spark e fornece exemplos de consultas do Explorador de registos para cada tipo de registo.
dataproc.googleapis.com/output
: este ficheiro de registo contém a saída da carga de trabalho em lote. O Serverless para Apache Spark transmite a saída em lote para o espaço de nomesoutput
e define o nome do ficheiro comoJOB_ID.driver.log
.Exemplo de consulta do Explorador de registos para registos de saída:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Foutput"
dataproc.googleapis.com/spark
: o espaço de nomesspark
agrega registos do Spark para daemons e executores em execução nas VMs principais e de trabalho do cluster do Dataproc. Cada entrada de registo inclui uma etiqueta de componentemaster
,worker
ouexecutor
para identificar a origem do registo, da seguinte forma:executor
: registos de executores de código do utilizador. Normalmente, trata-se de registos distribuídos.master
: registos do mestre do gestor de recursos autónomo do Spark, que são semelhantes aos registos do YARN do Dataproc no Compute EngineResourceManager
.worker
: registos do trabalhador do gestor de recursos autónomo do Spark, que são semelhantes aos registos do YARN do Dataproc no Compute Engine.NodeManager
Exemplo de consulta do Explorador de registos para todos os registos no espaço de nomes
spark
:resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
Consulta de exemplo do Explorador de registos para registos de componentes autónomos do Spark no espaço de nomes
spark
:resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark" jsonPayload.component="COMPONENT"
dataproc.googleapis.com/startup
: o espaço de nomesstartup
inclui os registos de arranque do lote (cluster). Todos os registos de scripts de inicialização são incluídos. Os componentes são identificados por etiquetas, por exemplo: Exemplo de consulta do Explorador de registos para registos de arranque numa VM especificada:startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fstartup" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
dataproc.googleapis.com/agent
: o espaço de nomesagent
agrega os registos do agente do Dataproc. Cada entrada de registo inclui a etiqueta do nome do ficheiro que identifica a origem do registo.Exemplo de consulta do Explorador de registos para registos de agentes gerados por uma VM de trabalho especificada:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fagent" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
dataproc.googleapis.com/autoscaler
: o espaço de nomesautoscaler
agrega os registos do escalador automático do Serverless para Apache Spark.Exemplo de consulta do Explorador de registos para registos de agentes gerados por uma VM de trabalho especificada:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fautoscaler" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
Para mais informações, consulte os registos do Dataproc.
Para obter informações sobre os registos de auditoria do Serverless para Apache Spark, consulte o artigo Registo de auditoria do Dataproc.
Métricas de carga de trabalho
O Serverless para Apache Spark fornece métricas de lotes e do Spark que pode ver no Metrics Explorer ou na página Detalhes do lote na Google Cloud consola.
Métricas de lotes
As métricas de recursos do Dataproc batch
fornecem estatísticas sobre os recursos de processamento em lote, como o número de executores de processamento em lote. As métricas de lote têm o prefixo dataproc.googleapis.com/batch
.
Métricas do Spark
Por predefinição, o Serverless para Apache Spark ativa a recolha de métricas do Spark disponíveis, a menos que use propriedades de recolha de métricas do Spark para desativar ou substituir a recolha de uma ou mais métricas do Spark.
As métricas do Spark disponíveis incluem métricas do controlador e do executor do Spark, bem como métricas do sistema. As métricas do Spark têm o prefixo custom.googleapis.com/
.
Configure alertas de métricas
Pode criar alertas de métricas do Dataproc para receber um aviso de problemas de carga de trabalho.
Crie gráficos
Pode criar gráficos que visualizam as métricas de carga de trabalho através do
Explorador de métricas na
Google Cloud consola. Por exemplo, pode criar um gráfico para apresentar disk:bytes_used
e, em seguida, filtrar por batch_id
.
Cloud Monitoring
A monitorização usa metadados e métricas de cargas de trabalho para fornecer estatísticas sobre o estado e o desempenho das cargas de trabalho do Serverless para Apache Spark. As métricas de carga de trabalho incluem métricas do Spark, métricas de lotes e métricas de operações.
Pode usar o Cloud Monitoring na Google Cloud consola para explorar métricas, adicionar gráficos, criar painéis de controlo e criar alertas.
Crie painéis de controlo
Pode criar um painel de controlo para monitorizar cargas de trabalho através de métricas de vários projetos e diferentes produtos Google Cloud . Para mais informações, consulte o artigo Crie e faça a gestão de painéis de controlo personalizados.
Persistent History Server
O Serverless para Apache Spark cria os recursos de computação necessários para executar uma carga de trabalho, executa a carga de trabalho nesses recursos e, em seguida, elimina os recursos quando a carga de trabalho termina. As métricas e os eventos da carga de trabalho não persistem após a conclusão de uma carga de trabalho. No entanto, pode usar um servidor de histórico persistente (PHS) para reter o histórico de aplicações de cargas de trabalho (registos de eventos) no Cloud Storage.
Para usar um PHS com uma carga de trabalho em lote, faça o seguinte:
Crie um servidor de histórico persistente (PHS) do Dataproc.
Especifique o seu PHS quando enviar uma carga de trabalho.
Use o Component Gateway para estabelecer ligação ao PHS para ver detalhes da aplicação, fases do agendador, detalhes ao nível da tarefa e informações do ambiente e do executor.
Sintonização automática
- Ative a otimização automática para o Serverless for Apache Spark: pode ativar a otimização automática para o Serverless for Apache Spark quando envia cada carga de trabalho em lote do Spark recorrente através da Google Cloud consola, da CLI gcloud ou da API Dataproc.
Consola
Execute os passos seguintes para ativar a otimização automática em cada carga de trabalho em lote do Spark recorrente:
Na Google Cloud consola, aceda à página Batches do Dataproc.
Para criar uma carga de trabalho em lote, clique em Criar.
Na secção Recipiente, preencha o nome da coorte, que identifica o lote como um de uma série de cargas de trabalho recorrentes. A análise assistida pelo Gemini é aplicada à segunda e às cargas de trabalho subsequentes enviadas com este nome de coorte. Por exemplo, especifique
TPCH-Query1
como o nome da coorte para uma carga de trabalho agendada que executa uma consulta TPC-H diária.Preencha outras secções da página Criar lote, conforme necessário, e, de seguida, clique em Enviar. Para mais informações, consulte o artigo Envie uma carga de trabalho em lote.
gcloud
Execute o seguinte comando da CLI gcloud
gcloud dataproc batches submit
localmente numa janela de terminal ou no Cloud Shell
para ativar o ajuste automático em cada carga de trabalho em lote recorrente do Spark:
gcloud dataproc batches submit COMMAND \ --region=REGION \ --cohort=COHORT \ other arguments ...
Substitua o seguinte:
- COMMAND: o tipo de carga de trabalho do Spark, como
Spark
,PySpark
,Spark-Sql
ouSpark-R
. - REGION: a região onde a sua carga de trabalho vai ser executada.
- COHORT: o nome da coorte, que
identifica o lote como um de uma série de cargas de trabalho recorrentes.
A análise assistida pelo Gemini é aplicada à segunda e às cargas de trabalho subsequentes enviadas
com este nome de coorte. Por exemplo, especifique
TPCH Query 1
como o nome da coorte para uma carga de trabalho agendada que executa uma consulta TPC-H diariamente.
API
Inclua o nome num pedido batches.create para ativar o ajuste automático em cada carga de trabalho recorrente do Spark.RuntimeConfig.cohort
A otimização automática é aplicada à segunda e às cargas de trabalho subsequentes enviadas com este nome de coorte. Por exemplo, especifique TPCH-Query1
como o nome da coorte para uma carga de trabalho agendada que executa uma consulta TPC-H diária.
Exemplo:
...
runtimeConfig:
cohort: TPCH-Query1
...