Perguntas frequentes sobre o Serverless para Apache Spark

Esta página contém respostas para perguntas frequentes sobre o Google Cloud Serverless para Apache Spark.

Quando devo usar o Serverless para Apache Spark em vez do Dataproc no Compute Engine?

  • Serverless para Apache Spark:

    • Compatível com cargas de trabalho em lote do Spark e sessões interativas em notebooks Jupyter do kernel PySpark.
    • O Serverless para Apache Spark cria e gerencia sua carga de trabalho e a infraestrutura de sessão interativa.
  • Dataproc no Compute Engine:

    • Aceita o envio de diferentes tipos de jobs do Spark e jobs baseados em outros componentes de código aberto, como Flink, Hadoop, Hive, Pig, Presto e outros.

    • Não cria nem gerencia a infraestrutura. Você cria e gerencia seus clusters do Dataproc.

O que posso fazer com o Serverless para Apache Spark?

  • Executar jobs em lote.

  • Use o plug-in Dataproc JupyterLab para sessões de notebook interativas e em lote sem servidor.

  • Execute jobs de streaming usando bibliotecas de streaming do Spark. Observação: o Streaming não é um serviço gerenciado. Portanto, você precisa gerenciar o checkpointing e as reinicializações.

  • Treinar modelos usando o Spark MLlib.

  • Use notebooks interativos do SQL para exploração de dados, gráficos, série temporal e análises geoespaciais.

  • Orquestre cargas de trabalho sem servidor para Apache Spark com o Cloud Composer, um serviço gerenciado do Apache Airflow.

Como devo configurar um plano de execução de carga de trabalho?

É possível executar cargas de trabalho simultânea ou sequencialmente. Seu plano de execução afeta sua cota de recursos do Google Cloud . É possível executar quantas cargas de trabalho em paralelo as cotas de recursos em lote permitirem.

Posso usar uma imagem personalizada com o Serverless para Apache Spark?

Posso especificar recursos de memória e disco para cargas de trabalho do Spark sem servidor para Apache Spark?

Sim. É possível especificar executores premium e computação de driver, além de níveis de disco e a quantidade de recursos de computação e disco de driver e executor a serem alocados ao enviar uma carga de trabalho (consulte Propriedades de alocação de recursos).

Como posso especificar o intervalo de endereços IP da minha rede VPC do Serverless para Apache Spark?

As cargas de trabalho sem servidor para Apache Spark são executadas no seu ambiente. Cada driver e executor do Spark em uma carga de trabalho do Spark sem servidor consome um endereço IP interno na rede VPC do Serverless para Apache Spark. /16 é um intervalo de endereços CIDR típico especificado pelo usuário para uma rede VPC sem servidor para Apache Spark. É possível limitar o intervalo de endereços IP da sua rede com base no número de cargas de trabalho simultâneas que você planeja executar.

O Serverless para Apache Spark oferece suporte à residência de dados?

Sim. Você especifica a região em que sua carga de trabalho é processada. Localize os conjuntos de dados de entrada e saída na região especificada.

Como o Serverless para Apache Spark seleciona uma zona na região especificada para executar a carga de trabalho?

O Serverless para Apache Spark seleciona a zona do Compute Engine em que executa uma carga de trabalho com base na capacidade e na disponibilidade. Se uma zona ficar indisponível depois que uma carga de trabalho for iniciada, ela vai falhar, e você precisará reenviar a carga de trabalho com falha.

Como as cargas de trabalho do Serverless para Apache Spark usam recursos de computação?

Cada carga de trabalho é executada nos próprios recursos de computação. Várias solicitações de lote não compartilham nem reutilizam recursos de computação.

Práticas recomendadas:

  • Otimize sua carga de trabalho para jobs de execução média, não curta.

  • Persista os dados acessados por várias cargas de trabalho no Cloud Storage.

Onde posso encontrar informações sobre anúncios, recursos, correções de bugs, problemas conhecidos e descontinuações do Serverless para Apache Spark?

Consulte as notas da versão do Serverless para Apache Spark.

As cargas de trabalho simultâneas competem por recursos?

As cargas de trabalho sem servidor para Apache Spark só competem por recursos se a cota de recursos for insuficiente para executar todas as cargas de trabalho em execução simultânea. Caso contrário, as cargas de trabalho ficam totalmente isoladas umas das outras.

Como a cota do Serverless para Apache Spark é alocada?

Os lotes do Serverless para Apache Spark consomem recursos Google Cloud . Consulte Cotas do Dataproc sem servidor para mais informações.

Preciso configurar um servidor de histórico permanente do Dataproc?

A configuração de um Persistent History Server (PHS) para usar com o Serverless para Apache Spark é opcional.É possível usar o PHS para ver eventos do Spark e outros registros em um bucket especificado do Cloud Storage até e após o período padrão de retenção (TTL) de 90 dias do bucket de preparo e temporário do Serverless para Apache Spark.

Quais registros do Serverless para Apache Spark estão disponíveis?

Os registros do driver e dos executores do Spark estão disponíveis no Cloud Logging durante e após a execução da carga de trabalho do Spark. Além disso, os aplicativos Spark ficam visíveis na interface da Web do servidor de histórico persistente (PHS) enquanto a carga de trabalho está em execução. Para isso, selecione PHS > Aplicativos incompletos na interface do PHS.

Se você configurar um PHS do Dataproc, ele vai fornecer acesso persistente aos registros de eventos do Spark salvos no Cloud Storage, que oferecem insights sobre a execução de apps do Spark, como eventos de DAG e executor.

Posso definir o número de executores para minha carga de trabalho do Spark?

Sim. É possível definir o número de executores para uma carga de trabalho do Spark usando a propriedade spark.executor.instances. No entanto, o número total de núcleos que uma carga de trabalho pode usar é mais importante do que o número de executores, porque o Spark executa uma tarefa por núcleo. Por exemplo, se uma carga de trabalho tiver quatro executores com dois núcleos cada, ela vai executar 4 * 2 = 8 tarefas ao mesmo tempo. Ele também vai executar o mesmo número de tarefas para uma carga de trabalho que tem dois executores com quatro núcleos cada. Como o número de núcleos para cada carga de trabalho é o mesmo, eles vão executar o mesmo número de tarefas. Use a propriedade spark.executor.cores para definir o número de núcleos por executor na sua carga de trabalho do Serverless para Apache Spark.

Quais métricas do Spark o Serverless para Apache Spark usa para escalonamento automático?

O Serverless para Apache Spark analisa as métricas de alocação dinâmica maximum-needed e running do Spark para determinar se é necessário escalonar verticalmente ou reduzir a escala. Consulte Escalonamento automático do Serverless para Apache Spark.

Posso configurar o comportamento de escalonamento automático do Serverless para Apache Spark usando propriedades do Spark?

Sim. O escalonamento automático do Serverless para Apache Spark é baseado na alocação dinâmica do Spark e está ativado por padrão. É possível ajustar as seguintes propriedades do Spark e propriedades de alocação dinâmica do Spark:

  • spark.executor.instances
  • spark.dynamicAllocation.initialExecutors
  • spark.dynamicAllocation.minExecutors
  • spark.dynamicAllocation.maxExecutors

Por que preciso empacotar meu código em um arquivo JAR para enviar minha carga de trabalho do Spark?

O Spark é escrito em Scala, o que significa que os processos de driver e worker operam como processos da JVM. Em linguagens JVM, o arquivo JAR é a principal maneira de empacotar código. Você transmite o arquivo JAR para o Serverless para Apache Spark ao enviar uma carga de trabalho.