Perguntas frequentes sobre o Serviço Gerenciado para Apache Spark sem servidor

O Serviço Gerenciado para Apache Spark sem servidor permite executar cargas de trabalho em lote do Spark e sessões interativas em uma infraestrutura totalmente gerenciada. As perguntas e respostas a seguir abordam tópicos comuns de implantação, configuração e operação. Salvo indicação em contrário, essas informações se aplicam apenas a implantações sem servidor, não a implantações de cluster.

Quando devo usar a implantação sem servidor do Serviço Gerenciado para Apache Spark em vez da implantação de cluster do Serviço Gerenciado para Apache Spark?

  • Implantação sem servidor do Serviço Gerenciado para Apache Spark:

    • Oferece suporte a cargas de trabalho em lote do Spark e sessões interativas em notebooks do Jupyter com kernel do PySpark.
    • Cria e gerencia sua carga de trabalho e a infraestrutura de sessão interativa.
  • Implantação de cluster do Serviço Gerenciado para Apache Spark:

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

    • Não cria nem gerencia infraestrutura. Você cria e gerencia seus clusters do Serviço Gerenciado para Apache Spark.

O que posso fazer com a implantação sem servidor do Serviço Gerenciado para Apache Spark?

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

É possível executar cargas de trabalho de forma simultânea ou sequencial. 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 a implantação sem servidor do Serviço Gerenciado para Apache Spark?

Posso especificar recursos de memória e disco para cargas de trabalho do Serviço Gerenciado para Apache Spark?

Sim. É possível especificar os níveis de computação e disco do executor e do driver premium, bem como 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 posso especificar o intervalo de endereços IP para minha rede VPC do Serviço Gerenciado para Apache Spark?

As cargas de trabalho do Serviço Gerenciado 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 sua rede VPC do Serviço Gerenciado para Apache Spark. /16 é um intervalo de endereços CIDR típico especificado pelo usuário para uma rede VPC do Serviço Gerenciado 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 Serviço Gerenciado para Apache Spark é compatível com a 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 Serviço Gerenciado para Apache Spark seleciona uma zona na região especificada para executar a carga de trabalho?

O Serviço Gerenciado para Apache Spark seleciona a zona do Compute Engine em que uma carga de trabalho é executada 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á reenviá-la.

Como as cargas de trabalho do Serviço Gerenciado 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 sua carga de trabalho para jobs de média duração, não de curta duração.

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

Onde encontro informações sobre avisos, recursos, correções de bugs, problemas conhecidos e descontinuações do Serviço Gerenciado para Apache Spark?

Consulte as notas da versão do Serviço Gerenciado para Apache Spark.

As cargas de trabalho simultâneas competem por recursos?

As cargas de trabalho do Serviço Gerenciado 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 serão totalmente isoladas umas das outras.

Como a cota do Serviço Gerenciado para Apache Spark é alocada?

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

Preciso configurar um servidor de histórico persistente do Serviço Gerenciado para Apache Spark?

A configuração de um Servidor de Histórico Permanente (PHS) para uso com o Serviço Gerenciado para Apache Spark é opcional.É possível usar o PHS para visualizar eventos do Spark e outros registros em um bucket do Cloud Storage especificado até e após o período de retenção (TTL) padrão de 90 dias do bucket temporário e de preparo do Serviço Gerenciado para Apache Spark.

Quais registros do Serviço Gerenciado para Apache Spark estão disponíveis?

Os registros de executores e drivers 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 persistente (PHS) enquanto a carga de trabalho está em execução (selecione PHS > Aplicativos incompletos na interface do PHS).

Se você configurar um PHS do Serviço Gerenciado para Apache Spark, ele vai fornecer acesso persistente aos logs de eventos do Spark salvos no Cloud Storage, que fornecem 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 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, elas 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 para sua carga de trabalho do Serviço Gerenciado para Apache Spark.

Quais métricas do Spark o Serviço Gerenciado para Apache Spark usa para o escalonamento automático?

O Serviço Gerenciado 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 horizontal. Consulte Escalonamento automático do Serviço Gerenciado para Apache Spark.

Posso configurar o comportamento de escalonamento automático do Serviço Gerenciado para Apache Spark usando as propriedades do Spark?

Sim. O escalonamento automático do Serviço Gerenciado para Apache Spark é baseado na alocação dinâmica do Spark e é 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. Nas linguagens da JVM, o arquivo JAR é a principal maneira de empacotar código. Você transmite o arquivo JAR para o Serviço Gerenciado para Apache Spark ao enviar uma carga de trabalho.