No Cloud Data Fusion, a configuração do cluster se refere à definição de como os pipelines de processamento de dados utilizam recursos computacionais ao executar jobs do Spark no Dataproc. Nesta página, descrevemos as principais abordagens para configuração de cluster.
Clusters temporários padrão (recomendado)
Usar os clusters padrão é a abordagem recomendada para pipelines do Cloud Data Fusion.
- O Cloud Data Fusion provisiona e gerencia automaticamente clusters efêmeros do Dataproc para cada execução de pipeline. Ele cria um cluster no início da execução do pipeline e o exclui após a conclusão da execução.
- Benefícios dos clusters temporários:
- Simplicidade: não é preciso configurar ou gerenciar o cluster manualmente.
- Custo-benefício: você paga apenas pelos recursos usados durante a execução do pipeline.
Para ajustar clusters e otimizar o desempenho, consulte Dimensionamento de cluster.
Clusters estáticos (para cenários específicos)
Nos seguintes cenários, é possível usar clusters estáticos:
- Pipelines de longa duração: para pipelines que são executados continuamente ou por períodos prolongados, um cluster estático pode ser mais econômico do que criar e destruir repetidamente clusters temporários.
- Gerenciamento centralizado de clusters: se a organização exigir controle centralizado sobre a criação de clusters e políticas de gerenciamento, os clusters estáticos poderão ser usados com ferramentas como o Terraform.
- Tempo de criação do cluster: quando o tempo necessário para criar um novo cluster para cada pipeline é adequado para seu caso de uso.
No entanto, os clusters estáticos exigem mais configuração manual e envolvem o gerenciamento do ciclo de vida do cluster por você.
Para usar um cluster estático, defina 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 cluster para clusters estáticos
Se você optar por usar clusters estáticos, o Cloud Data Fusion vai oferecer opções de configuração para os seguintes aspectos:
- Tipo de máquina de trabalho: especifique o tipo de máquina virtual para os nós de trabalho no cluster. Isso determina as vCPUs e a memória disponíveis para cada worker.
- Número de workers: defina o número inicial de nós de worker no cluster. O Dataproc ainda pode escalonar automaticamente esse número com base na carga de trabalho.
- Zona: selecione a Google Cloud zona do cluster. A localização pode afetar a localidade dos dados e o desempenho da rede.
- Configurações adicionais: é possível configurar opções avançadas para seu cluster estático, como configurações de substituição, configurações de rede e ações de inicialização.
Práticas recomendadas
Ao criar um cluster estático para seus pipelines, use as configurações a seguir.
Parâmetros | Descrição |
---|---|
yarn.nodemanager.delete.debug-delay-sec |
Retém registros 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 os contêineres se
eles ultrapassarem a memória física. Valor recomendado: false |
yarn.nodemanager.vmem-check-enabled |
Permite que o YARN verifique se há limites de memória virtual e elimine os contêineres se
eles forem além da memória física. Valor recomendado: false |
dataproc.scheduler.driver-size-mb |
A média de uso de memória do driver faz com que o Dataproc coloque o job na fila se o nó mestre não tiver memória suficiente para executar o processo do driver. Isso pode afetar a concorrência de jobs, mas pode ser atenuado usando um nó principal com mais memória. Valor recomendado: 2048 |
Para mais informações, consulte Executar um pipeline em um cluster atual do Dataproc.
Reutilização de clusters
É possível reutilizar clusters do Dataproc entre execuções para melhorar o tempo de processamento. A reutilização de cluster é implementada em um modelo semelhante ao pooling de conexões ou de threads. Qualquer cluster é mantido em execução por um período especificado após a conclusão da execução. Quando uma nova execução é iniciada, ela tenta encontrar um cluster disponível e inativo que corresponda à configuração do perfil de computação. Se um estiver presente, ele será usado. Caso contrário, um novo cluster será iniciado.
Considerações para reutilizar clusters
- Os clusters não são compartilhados. Assim como no modelo de provisionamento de cluster temporário regular, um cluster executa uma única execução de pipeline por vez. Um cluster só é reutilizado se estiver ocioso.
- Se você ativar a reutilização de cluster para todas as execuções, o número necessário de clusters para processar todas as execuções será criado conforme necessário. Assim como o provisionador efêmero do Dataproc, não há controle direto sobre o número de clusters criados. Você ainda pode usar Google Cloud quotes para gerenciar recursos. Por exemplo, se você executar 100 execuções com um máximo de 7 execuções paralelas, terá até 7 clusters em um determinado momento.
Os clusters são reutilizados entre diferentes pipelines assim que eles usam o mesmo perfil e compartilham as mesmas configurações de perfil. Se a personalização de perfil for usada, os clusters ainda serão reutilizados, mas somente se as personalizações forem exatamente iguais, incluindo todas as configurações de cluster, como a rotulagem.
Quando a reutilização de clusters está ativada, há duas considerações principais de custo:
- Menos recursos são usados para inicialização e inicialização do cluster.
- Mais recursos são usados para que os clusters fiquem inativos entre as execuções de pipeline e após a última execução.
Embora seja difícil prever o efeito de custo da reutilização de clusters, é possível usar uma estratégia para maximizar a economia. A estratégia é identificar um caminho crítico para pipelines encadeados e ativar a reutilização de clusters para esse caminho. Isso garante que o cluster seja reutilizado imediatamente, sem desperdício de tempo ocioso e com o máximo de benefícios de desempenho.
Ativar a reutilização de clusters
Na seção "Configuração de computação" da configuração de pipeline implantada ou ao criar um novo perfil de computação:
- Ative a opção Pular exclusão de cluster.
- O tempo máximo de inatividade é o período em que um cluster aguarda o próximo pipeline para reutilizá-lo. O tempo máximo de inatividade padrão é de 30 minutos. Para o tempo máximo de inatividade, considere o custo em relação à disponibilidade do cluster para reutilização. Quanto maior o valor de "Tempo máximo de inatividade", mais clusters ficam inativos, prontos para uma execução.
Solução de problemas: compatibilidade de versões
Problema: a versão do ambiente do Cloud Data Fusion pode não ser compatível com a versão do cluster do Dataproc.
Recomendado: faça upgrade para a versão mais recente do Cloud Data Fusion e use uma das versões compatíveis do Dataproc.
As versões anteriores do Cloud Data Fusion são compatíveis apenas com versões incompatíveis do Dataproc. O Dataproc não oferece atualizações e suporte para clusters criados com estas versões. Embora seja possível continuar a execução de um cluster que foi criado com uma versão não compatível, recomendamos a substituição por um criado com uma versão aceita.
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** |
major.minor
.Para especificar a versão do SO usada no cluster do Dataproc, ela precisa ser compatível com uma das versões do Dataproc aceitas para seu Cloud Data Fusion na tabela anterior.
Solução de problemas: o contêiner foi encerrado com um código de saída diferente de zero 3
Problema: uma política de escalonamento automático não é usada, e os clusters estáticos do Dataproc estão enfrentando pressão de memória, causando uma exceção de falta de memória nos registros: 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 argumento de ambiente de execução de exemplo a seguir define a memória como 4096 MB:
"task.executor.system.resources.memory": 4096
Para mais informações, consulte Dimensionamento de cluster.