Configuração do cluster do Dataproc

No Cloud Data Fusion, a configuração do cluster refere-se à definição da forma como os seus pipelines de processamento de dados usam recursos computacionais quando executam tarefas do Spark no Dataproc. Esta página descreve as principais abordagens à configuração de clusters.

Clusters efémeros predefinidos (recomendado)

A utilização dos clusters predefinidos é a abordagem recomendada para pipelines do Cloud Data Fusion.

  • O Cloud Data Fusion aprovisiona e gere automaticamente clusters Dataproc efémeros para cada execução de pipeline. Cria um cluster no início da execução do pipeline e, em seguida, elimina-o após a conclusão da execução do pipeline.
  • Vantagens dos clusters efémeros:
    • Simplicidade: não tem de configurar nem gerir manualmente o cluster.
    • Rentabilidade: paga apenas pelos recursos usados durante a execução do pipeline.

Para ajustar os clusters e otimizar o desempenho, consulte o artigo Dimensionamento de clusters.

Clusters estáticos (para cenários específicos)

Nos seguintes cenários, pode usar clusters estáticos:

  • Pipelines de execução prolongada: para pipelines que são executados continuamente ou durante períodos prolongados, um cluster estático pode ser mais rentável do que criar e destruir repetidamente clusters efémeros.
  • Gestão de clusters centralizada: se a sua organização exigir controlo centralizado sobre a criação de clusters e as políticas de gestão, pode usar clusters estáticos juntamente com ferramentas como o Terraform.
  • Tempo de criação do cluster: quando o tempo necessário para criar um novo cluster para cada pipeline é proibitivo para o seu exemplo de utilização.

No entanto, os clusters estáticos requerem uma configuração mais manual e envolvem a gestão do ciclo de vida do cluster por si.

Para usar um cluster estático, tem de definir as seguintes propriedades no cluster do Dataproc:

dataproc:dataproc.conscrypt.provider.enable=false
capacity-scheduler:yarn.scheduler.capacity.resource-calculator="org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"

Opções de configuração de clusters para clusters estáticos

Se optar por usar clusters estáticos, o Cloud Data Fusion oferece opções de configuração para os seguintes aspetos:

  • Tipo de máquina de trabalho: especifique o tipo de máquina virtual para os nós de trabalho no seu cluster. Isto determina as vCPUs e a memória disponíveis para cada trabalhador.
  • Número de trabalhadores: defina o número inicial de nós de trabalho no seu cluster. O Dataproc pode continuar a ajustar automaticamente este número com base na carga de trabalho.
  • Zona: selecione a zona do seu cluster Google Cloud . A localização pode afetar a localidade dos dados e o desempenho da rede.
  • Configurações adicionais: pode configurar opções avançadas para o cluster estático, como definições de preemptividade, definições de rede e ações de inicialização.

Práticas recomendadas

Quando criar um cluster estático para os seus pipelines, use as seguintes configurações.

Parâmetros Descrição
yarn.nodemanager.delete.debug-delay-sec Retém os registos do YARN.
Valor recomendado: 86400 (equivalente a um dia)
yarn.nodemanager.pmem-check-enabled Permite que o YARN verifique os limites de memória física e elimine contentores se estes ultrapassarem a memória física.
Valor recomendado: false
yarn.nodemanager.vmem-check-enabled Permite que o YARN verifique os limites de memória virtual e elimine contentores se ultrapassarem a memória física.
Valor recomendado: false
dataproc.scheduler.driver-size-mb A pegada de memória média do controlador faz com que o Dataproc coloque o trabalho em fila se o nó principal não tiver memória suficiente para executar o processo do controlador. Isto pode afetar a concorrência de tarefas, mas pode ser atenuado através da utilização de um nó principal com mais memória.
Valor recomendado: 2048

Para mais informações, consulte o artigo Execute um pipeline num cluster do Dataproc existente.

Reutilizar clusters

Pode reutilizar clusters do Dataproc entre execuções para melhorar o tempo de processamento. A reutilização de clusters é implementada num modelo semelhante à pool de ligações ou à pool de threads. Qualquer cluster é mantido em funcionamento durante um período especificado após a conclusão da execução. Quando é iniciada uma nova execução, o sistema tenta encontrar um cluster inativo disponível que corresponda à configuração do perfil de computação. Se estiver presente, é usado, caso contrário, é iniciado um novo cluster.

Considerações para a reutilização de clusters

  • Os clusters não são partilhados. Semelhante ao modelo de aprovisionamento de cluster efémero normal, um cluster executa uma única execução de pipeline de cada vez. Um cluster só é reutilizado se estiver inativo.
  • Se ativar a reutilização de clusters para todas as suas execuções, o número necessário de clusters para processar todas as suas execuções é criado conforme necessário. Semelhante ao aprovisionador do Dataproc efémero, não existe controlo direto sobre o número de clusters criados. Pode continuar a usar Google Cloud as quotas para gerir recursos. Por exemplo, se executar 100 execuções com um máximo de 7 execuções paralelas, terá até 7 clusters num determinado momento.
  • Os clusters são reutilizados entre diferentes pipelines assim que esses pipelines usam o mesmo perfil e partilham as mesmas definições do perfil. Se for usada a personalização do perfil, os clusters continuam a ser reutilizados, mas apenas se as personalizações forem exatamente iguais, incluindo todas as definições dos clusters, como a etiquetagem dos clusters.

  • Quando a reutilização de clusters está ativada, existem duas considerações de custos principais:

    • São usados menos recursos para o arranque e a inicialização do cluster.
    • São usados mais recursos para os clusters ficarem inativos entre as execuções do pipeline e após a última execução do pipeline.

Embora seja difícil prever o efeito do custo da reutilização de clusters, pode usar uma estratégia para obter a poupança máxima. A estratégia consiste em identificar um caminho crítico para pipelines encadeados e ativar a reutilização de clusters para este caminho crítico. Isto garante que o cluster é reutilizado imediatamente, não se desperdiça tempo inativo e são alcançados os máximos benefícios de desempenho.

Ativar reutilização de clusters

Na secção Compute Config da configuração do pipeline implementado ou quando criar um novo perfil de computação:

  • Ative a opção Ignorar eliminação de grupos.
  • O tempo de inatividade máximo é o tempo durante o qual um cluster aguarda que o próximo pipeline o reutilize. O tempo de inatividade máximo predefinido é de 30 minutos. Para o tempo de inatividade máximo, tenha em atenção o custo em comparação com a disponibilidade do cluster para reutilização. Quanto maior for o valor de Max Idle Time, mais clusters ficam inativos, prontos para serem executados.

Resolução de problemas: compatibilidade de versões

Problema: a versão do seu ambiente do Cloud Data Fusion pode não ser compatível com a versão do seu cluster do Dataproc.

Recomendado: atualize para a versão mais recente do Cloud Data Fusion e use uma das versões do Dataproc suportadas.

As versões anteriores do Cloud Data Fusion só são compatíveis com versões não suportadas do Dataproc. O Dataproc não fornece atualizações nem apoio técnico para clusters criados com estas versões. Embora possa continuar a executar um cluster criado com uma versão não suportada, recomendamos que o substitua por um criado com uma versão suportada.

Versão do Cloud Data Fusion Versão do Dataproc
6.11.1 2.3
6.10.1.1 2.2***, 2.1, 2.0 *
6.10 2,1, 2,0 *
6.9 2.1, 2.0, 1.5 *
6,7-6,8 2,0, 1,5 *
6,4-6,6 2,0 *, 1,3 **
6,1-6,3 1.3**

* As versões 6.4 e posteriores do Cloud Data Fusion são compatíveis com as versões suportadas do Dataproc. A menos que sejam necessárias funcionalidades específicas do SO, a prática recomendada é especificar a versão da imagem .major.minor
Para especificar a versão do SO usada no cluster do Dataproc, a versão do SO tem de ser compatível com uma das versões do Dataproc suportadas para o Cloud Data Fusion na tabela anterior.

** As versões 6.1 a 6.6 do Cloud Data Fusion são compatíveis com a versão 1.3 não suportada do Dataproc.

*** Foram detetados determinados problemas com esta versão da imagem. Esta versão da imagem do Dataproc não é recomendada para utilização em produção.

Resolução de problemas: o contentor saiu com um código de saída diferente de zero 3

Problema: não é usada uma política de escalamento automático e os clusters do Dataproc estáticos estão a ter problemas de memória, o que faz com que seja apresentada uma exceção de falta de memória nos registos: Container exited with a non-zero exit code 3.

Recomendado: aumente a memória do executor.

Aumente a memória adicionando um argumento de tempo de execução task.executor.system.resources.memory ao pipeline. O seguinte exemplo de argumento de tempo de execução define a memória como 4096 MB:

"task.executor.system.resources.memory": 4096

Para mais informações, consulte o artigo Dimensionamento de clusters.

O que se segue?