Para clientes Google Cloud que dependem do Apache Spark para executar cargas de trabalho de análise e processamento de dados, uma decisão importante é escolher entre o Dataproc no Compute Engine (chamado de "Dataproc" neste documento) e o Serverless para Apache Spark. Embora os dois serviços ofereçam um ambiente Spark gerenciado, altamente escalonável, pronto para produção e seguro, compatível com OSS e com suporte total para formatos de dados, essas duas plataformas diferem fundamentalmente na forma como a infraestrutura subjacente é gerenciada e faturada.
Este documento compara o Google Cloud Serverless para Apache Spark com o Dataproc e lista os recursos e as funcionalidades deles para ajudar você a decidir qual é a melhor solução de carga de trabalho do Spark.
Comparar o Serverless para Apache Spark com o Dataproc
Se você quiser provisionar e gerenciar a infraestrutura e executar cargas de trabalho no Spark e em outros frameworks de processamento de código aberto, use o Dataproc no Compute Engine. A tabela a seguir lista as principais diferenças entre o Dataproc no Compute Engine e o Serverless para Apache Spark.
| Capacidade | Sem servidor para Apache Spark | Dataproc no Compute Engine |
|---|---|---|
| Frameworks de processamento | Cargas de trabalho em lote e sessões interativas: Spark | Spark. Outros frameworks de código aberto, como Hive, Flink, Trino e Kafka |
| Sem servidor | Sim | Não |
| Tempo de inicialização | 50 s | 120s |
| Controle de infraestrutura | Não | Sim |
| Gerenciamento de recursos | Sem servidor | YARN |
| Suporte a GPUs | Sim | Sim |
| Sessões interativas | Sim | Não |
| Contêineres personalizados | Sim | Não |
| Acesso à VM (SSH) | Não | Sim |
| Versões do Java | Java 17, 21 | Java 17 e versões anteriores |
Decidir qual é o melhor serviço do Spark
Esta seção descreve os principais pontos fortes e os principais casos de uso de cada serviço para ajudar você a selecionar o melhor para suas cargas de trabalho do Spark.
Visão geral
O Dataproc e o Serverless para Apache Spark diferem no grau de controle, no gerenciamento de infraestrutura e no modo de faturamento que cada um oferece.
- Spark gerenciado pelo Dataproc:o Dataproc oferece clusters do Spark como um serviço, executando o Spark gerenciado na sua infraestrutura do Compute Engine. Você paga pelo tempo de atividade do cluster.
- Serverless para Apache Spark:oferece jobs do Spark como um serviço, executando o Spark em uma infraestrutura Google Cloud totalmente gerenciada. Você paga pelo tempo de execução do job.
Devido a essas diferenças, cada serviço é mais adequado para os seguintes casos de uso:
| Serviço | Casos de uso |
|---|---|
| Dataproc | Ambientes compartilhados de longa duração Cargas de trabalho que exigem controle granular sobre a infraestrutura Migração de ambientes legados do Hadoop e do Spark |
| Sem servidor para Apache Spark | Diferentes ambientes de job dedicados Cargas de trabalho em lote programadas Priorização do gerenciamento de código em vez do gerenciamento de infraestrutura |
principais diferenças
| Recurso | Dataproc | Sem servidor para Apache Spark |
|---|---|---|
| Modelo de gestão | Baseado em cluster. Você provisiona e gerencia clusters. | Ambiente de execução totalmente gerenciado e sem servidor. |
| Controle e personalização | Mais controle sobre a configuração do cluster, os tipos de máquinas e o software. Capacidade de usar VMs Spot e reutilizar reservas e capacidade de recursos do Compute Engine. Adequado para cargas de trabalho que têm uma dependência de formatos de VM específicos, como arquiteturas de CPU. | Menos controle de infraestrutura, com foco no envio de código e na especificação de parâmetros do Spark. |
| Casos de uso | Clusters compartilhados de longa duração, migração de cargas de trabalho do Hadoop e do Spark com configurações personalizadas, cargas de trabalho que exigem personalização profunda. | Consultas ad hoc, análises interativas, novos pipelines do Spark e cargas de trabalho com necessidades de recursos imprevisíveis. |
| Trabalho operacional | Maior overhead que exige gerenciamento, escalonamento e manutenção de clusters. | Redução da sobrecarga.O Google Cloud gerencia a infraestrutura, o escalonamento e o provisionamento, permitindo um modelo NoOps. O Gemini Cloud Assist facilita a solução de problemas, enquanto o ajuste automático do Serverless para Apache Spark ajuda a oferecer o desempenho ideal. |
| Modelo de eficiência | Eficiência obtida ao compartilhar clusters entre jobs e equipes com um modelo de multilocação. | Sem sobrecarga de computação ociosa: alocação de recursos de computação apenas quando o job está em execução. Sem custo de inicialização e desligamento. Sessões interativas compartilhadas para melhorar a eficiência. |
| Controle de localização | Os clusters são zonais. A zona pode ser selecionada automaticamente durante a criação do cluster. | O Serverless para Apache Spark oferece suporte a cargas de trabalho regionais sem custo extra para aumentar a confiabilidade e a disponibilidade. |
| Custo | O faturamento é feito pelo tempo em que o cluster está em execução, incluindo inicialização e encerramento, com base no número de nós. Inclui a taxa de licença do Dataproc e o custo de infraestrutura. | A cobrança é feita apenas pela duração da execução do job do Spark, sem incluir a inicialização e o encerramento, com base nos recursos consumidos. Cobrado como unidades de computação de dados (DCU) usadas e outros custos de infraestrutura. |
| Descontos por uso contínuo (CUDs) | Os CUDs do Compute Engine se aplicam a todo o uso de recursos. | Os CUDs baseados em gastos do BigQuery se aplicam a jobs do Serverless para Apache Spark. |
| Controle de imagem e ambiente de execução | Os usuários podem fixar versões secundárias e subalternas de imagens do Dataproc. | Os usuários podem fixar versões secundárias do ambiente de execução do Serverless para Apache Spark. As versões subalternas são gerenciadas pelo Serverless para Apache Spark. |
| Gerenciamento de recursos | YARN | Sem servidor |
| Suporte a GPU | Sim | Sim |
| Sessões interativas | Não | Sim |
| Contêineres personalizados | Não | Sim |
| Acesso à VM (SSH) | Sim | Não |
| Versões do Java | Versões anteriores com suporte | Java 17, 21 |
| Tempo de inicialização | 120s | 50 s |
Quando escolher o Dataproc
O Dataproc é um serviço gerenciado que pode ser usado para executar o Apache Spark e outros frameworks de processamento de dados de código aberto. Ele oferece um alto grau de controle e flexibilidade, sendo a opção preferida nos seguintes cenários:
- Migração de cargas de trabalho do Hadoop e do Spark:oferece suporte à migração de clusters do Hadoop ou do Spark no local para o Google Cloud. Replique as configurações atuais com o mínimo de mudanças no código, principalmente ao usar versões mais antigas do Spark.
- Personalização e controle avançados:permite personalizar tipos de máquinas de cluster, tamanhos de disco e configurações de rede. Esse nível de controle é essencial para o ajuste de performance e a otimização da utilização de recursos em jobs complexos e de longa duração.
- Clusters de longa duração e persistentes:oferecem suporte a jobs do Spark contínuos e de longa duração e a clusters persistentes para várias equipes e projetos.
- Ecossistema de código aberto diversificado:oferece um ambiente unificado para executar pipelines de processamento de dados com ferramentas do ecossistema Hadoop, como Hive, Pig ou Presto, com suas cargas de trabalho do Spark.
- Conformidade com a segurança:permite o controle da infraestrutura para atender a padrões específicos de segurança ou compliance, como a proteção de informações de identificação pessoal (PII) ou informações protegidas de saúde (PHI).
- Flexibilidade da infraestrutura:oferece VMs spot e a capacidade de reutilizar reservas e capacidade de recursos do Compute Engine para equilibrar o uso de recursos e facilitar sua estratégia infraestrutura em nuvem.
Quando escolher o Serverless para Apache Spark
O Serverless para Apache Spark abstrai as complexidades do gerenciamento de clusters, permitindo que você se concentre no código Spark. Isso o torna uma excelente opção para uso nos seguintes cenários de processamento de dados:
- Análise interativa e ad hoc:para cientistas e analistas de dados que executam consultas interativas e análises exploratórias usando o Spark, o modelo sem servidor oferece uma maneira rápida de começar sem se concentrar na infraestrutura.
- Aplicativos e pipelines baseados no Spark:ao criar novos pipelines ou aplicativos de dados no Spark, o Serverless para Apache Spark pode acelerar significativamente o desenvolvimento, removendo a sobrecarga operacional do gerenciamento de clusters.
- Cargas de trabalho com demanda esporádica ou imprevisível:para jobs intermitentes do Spark ou com requisitos de recursos variáveis, o escalonamento automático do Serverless para Apache Spark e o preço pago por uso (as cobranças se aplicam ao consumo de recursos do job) podem reduzir significativamente os custos.
- Foco na produtividade do desenvolvedor:ao eliminar a necessidade de provisionamento e gerenciamento de clusters, o Serverless para Apache Spark acelera a criação de lógica de negócios, fornece insights mais rápidos e aumenta a produtividade.
- Operações simplificadas e sobrecarga reduzida:o gerenciamento da infraestrutura do Serverless para Apache Spark reduz custos e sobrecarga operacional.
Resumindo
A decisão de usar o Dataproc ou o Serverless para Apache Spark depende dos requisitos de carga de trabalho, das preferências operacionais e do nível de controle desejado.
- Escolha o Dataproc quando precisar de controle máximo, migrar cargas de trabalho do Hadoop ou do Spark ou precisar de um ambiente de cluster persistente, personalizado e compartilhado.
- Escolha o Serverless para Apache Spark pela facilidade de uso, custo-benefício para cargas de trabalho intermitentes e capacidade de acelerar o desenvolvimento de novos aplicativos Spark, removendo a sobrecarga do gerenciamento de infraestrutura.
Depois de avaliar os fatores listados nesta seção, selecione o serviço mais eficiente e econômico para executar o Spark e aproveitar todo o potencial dos seus dados.