Este documento compara o Dataproc no Compute Engine (referido como "Dataproc" neste documento) e o Google Cloud Serverless para Apache Spark. Embora os dois 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, eles diferem na forma como gerenciam a infraestrutura subjacente e cobram pelos recursos. Confira os recursos e casos de uso a seguir para escolher uma solução do Spark.
Para mais informações sobre o Google Cloud Serverless para Apache Spark, consulte a visão geral do Serverless para Apache 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 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 | Sem servidor para Apache Spark | Dataproc |
|---|---|---|
| Modelo de gerenciamento | Ambiente de execução totalmente gerenciado e sem servidor. | Baseado em cluster. Você provisiona e gerencia clusters. |
| Controle e personalização | Menos controle de infraestrutura, com foco no envio de código e na especificação de parâmetros do Spark. | 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. |
| Casos de uso | Consultas ad hoc, análises interativas, novos pipelines do Spark e cargas de trabalho com necessidades de recursos imprevisíveis. | Clusters compartilhados de longa duração, migração de cargas de trabalho atuais do Hadoop e do Spark com configurações personalizadas, cargas de trabalho que exigem personalização profunda. |
| Trabalho operacional | 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 performance ideal. |
Maior overhead que exige gerenciamento, escalonamento e manutenção de cluster. |
| Modelo de eficiência | 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. | Eficiência obtida ao compartilhar clusters entre jobs e equipes, com um modelo de compartilhamento e multilocação. |
| Controle de localização | O Serverless para Apache Spark oferece suporte a cargas de trabalho regionais sem custo extra para oferecer mais confiabilidade e disponibilidade. | Os clusters são zonais. A zona pode ser selecionada automaticamente durante a criação do cluster. |
| Custo | 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. | 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 mais o custo de infraestrutura. |
| Descontos por uso contínuo (CUDs) | Os CUDs baseados em gastos do BigQuery se aplicam a jobs do Serverless para Apache Spark. | Os CUDs do Compute Engine se aplicam a todo o uso de recursos. |
| Controle de imagem e tempo de execução | 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. | Os usuários podem fixar versões secundárias e subalternas de imagens do Dataproc. |
| Gerenciamento de recursos | Sem servidor | YARN |
| Suporte a GPU | 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 |
Versões anteriores com suporte |
| Tempo de inicialização | 50 s | 120s |
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 escolha preferida nos seguintes cenários:
- Migração de cargas de trabalho atuais do Hadoop e do Spark:oferece suporte à migração de clusters do Hadoop ou do Spark locais 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 persistentes e de longa duração: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 os custos e a 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.