Para escalonar um cluster do Dataproc no GKE, atualize a configuração do escalonador automático dos pools de nós associados às funções de driver ou executor do Spark. Você especifica os pools de nós do Dataproc no GKE e as funções associadas a eles quando você cria um cluster do Dataproc no GKE.
Definir o escalonamento automático do pool de nós
É possível definir os limites para o escalonamento automático do pool de nós do Dataproc no GKE ao criar um cluster virtual do Dataproc no GKE. Se não for especificado, os pools de nós do Dataproc no GKE serão escalonados automaticamente com valores padrão (na versão GA do Dataproc no GKE, os padrões são definidos como mínimo = 1 e máximo = 10, que estão sujeitos a mudanças). Para receber valores específicos de escalonamento automático mínimo e máximo do pool de nós, defina-os ao criar o cluster virtual do Dataproc no GKE.
Atualizar o escalonamento automático do pool de nós
Use o comando do GKE a seguir para mudar a configuração de escalonamento automático de um pool de nós do Dataproc no GKE.gcloud container node-pools update
gcloud container node-pools update NODE_POOL_NAME \ --cluster=GKE_CLUSTER_NAME \ --region=region \ --enable-autoscaling \ --min-nodes=min nodes (must be <= max-nodes) \ --max-nodes=max nodes (must be >= min-nodes) \
Como o escalonamento automático do Spark funciona
- Quando um job é enviado, o pod do driver é programado para ser executado no pool de nós associado à função de driver do Spark.
- O pod do driver chama o programador do GKE para criar pods do executor.
- Os pods do executor são programados no pool de nós associado à função de executor do Spark.
- Se os pools de nós tiverem capacidade para os pods, eles começarão a ser executados imediatamente. Se a capacidade for insuficiente, o escalonador automático de cluster do GKE vai aumentar o pool de nós para fornecer os recursos solicitados, até o limite especificado pelo usuário. Quando os pools de nós têm capacidade excessiva, o escalonador automático de cluster do GKE reduz o pool de nós até o limite especificado pelo usuário.