Perguntas frequentes sobre o Serverless para Apache Spark

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

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

  • Serverless para Apache Spark

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

    • Oferece suporte ao 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.

  • Executar jobs de streaming usando bibliotecas de streaming do Spark. Observação: o streaming não é um serviço gerenciado. Portanto, é necessário gerenciar o checkpoint e as reinicializações.

  • Treinar modelos usando o Spark MLlib.

  • Usar notebooks SQL interativos para exploração de dados, gráficos, séries temporais e análises geoespaciais.

  • Orquestrar cargas de trabalho do Serverless para Apache Spark com o Cloud Composer, um serviço gerenciado do Apache Airflow.

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

É possível executar cargas de trabalho simultaneamente ou em sequência. O plano de execução afeta sua Google Cloud cota de recursos. É possível executar quantas cargas de trabalho em paralelo forem permitidas pelas cotas de recursos em lote.

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

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

Sim. É possível especificar camadas de computação e disco do executor e do driver premium e a quantidade de recursos de computação e disco do driver e do executor a serem alocados ao enviar uma carga de trabalho (consulte Propriedades de alocação de recursos).

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

As cargas de trabalho do Serverless para Apache Spark são executadas no seu ambiente. Cada driver e executor do Spark em uma carga de trabalho do Serverless Spark consome um endereço IP interno na sua rede VPC do Serverless para Apache Spark. /16 é um intervalo de endereços CIDR típico especificado pelo usuário para uma rede VPC do Serverless para Apache Spark. É possível limitar o intervalo de endereços IP da 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 a 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 disponibilidade. Se uma zona ficar indisponível após o início de uma carga de trabalho, ela falhará e será necessário 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ários envios em lote não compartilham nem reutilizam recursos de computação.

Práticas recomendadas:

  • Otimize a carga de trabalho para jobs de execução média, não para jobs de execuçã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 suspensões de uso do Serverless para Apache Spark?

Consulte as notas de lançamento do Serverless para Apache Spark.

As cargas de trabalho simultâneas competem por recursos?

As cargas de trabalho do Serverless para Apache Spark só competem por recursos se a cota de recursos for insuficiente para executar todas as cargas de trabalho simultâneas. Caso contrário, as cargas de trabalho são totalmente isoladas umas das outras.

Como a cota do Serverless para Apache Spark é alocada?

O Serverless para Apache Spark consome Google Cloud recursos. 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 servidor de histórico permanente (PHS) para uso com o Serverless para Apache Spark é opcional.É possível usar o PHS para visualizar eventos do Spark e outros registros em um bucket especificado do Cloud Storage até e após o período de retenção padrão de 90 dias (TTL) do bucket temporário e de preparo do Serverless para Apache Spark.

Quais registros do Spark 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 do Spark ficam visíveis na interface da Web do servidor de histórico permanente (PHS) enquanto a carga de trabalho está em execução (selecione PHS > Incomplete Applications na interface do PHS).

Se você configurar um PHS do Dataproc, ele fornecerá acesso persistente aos registros de eventos do Spark salvos no Cloud Storage, que oferecem insights sobre a execução do app 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 spark.executor.instances propriedade. 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 executará 4 * 2 = 8 tarefas ao mesmo tempo. Ela também executará o mesmo número de tarefas para uma carga de trabalho que tenha dois executores com quatro núcleos cada. Como o número de núcleos para cada carga de trabalho é o mesmo, elas executarão o mesmo número de tarefas. É possível usar a spark.executor.cores propriedade para definir o número de núcleos por executor para 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 do Spark maximum-needed e running para determinar se é necessário aumentar ou diminuir 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 do driver e do worker operam como processos da JVM. Em linguagens JVM, o arquivo JAR é a principal maneira de empacotar o código. Você transmite o arquivo JAR para o Serverless para Apache Spark ao enviar uma carga de trabalho.