.
As políticas de segurança da organização, as regras de conformidade regulamentar e outras considerações podem levar a que "rode" os clusters do Dataproc a intervalos regulares, eliminando e, em seguida, recriando clusters de acordo com um horário. Como parte da rotação de clusters, é possível aprovisionar novos clusters com as versões de imagens do Dataproc mais recentes, mantendo as definições de configuração dos clusters substituídos.
Esta página mostra como configurar clusters que planeia rodar ("clusters rodados"), enviar trabalhos para os mesmos e, em seguida, rodar os clusters conforme necessário.
Rotação do cluster de imagem personalizada: pode aplicar personalizações anteriores ou novas a uma imagem base do Dataproc anterior ou nova quando recria o cluster de imagem personalizada.
Configure clusters rotados
Para configurar clusters rotados, crie nomes de clusters exclusivos com sufixo de data/hora para distinguir os clusters anteriores dos novos e, em seguida, anexe etiquetas aos clusters que indicam se um cluster faz parte de um conjunto de clusters rotados e está a receber ativamente novos envios de tarefas. Este exemplo usa as etiquetas cluster-pool
e cluster-state=active
para estes fins, mas pode usar os seus próprios nomes de etiquetas.
Defina variáveis de ambiente:
PROJECT=project ID \ REGION=region \ CLUSTER_POOL=cluster-pool-name \ CLUSTER_NAME=$CLUSTER_POOL-$(date '+%Y%m%d%H%M') \ BUCKET=Cloud Storage bucket-name
Notas:
- cluster-pool-name: o nome do conjunto de clusters associado a um ou mais clusters. Este nome é usado no nome do cluster e com a etiqueta anexada ao cluster para identificar o cluster como parte do conjunto.
cluster-pool
- cluster-pool-name: o nome do conjunto de clusters associado a um ou mais clusters. Este nome é usado no nome do cluster e com a etiqueta anexada ao cluster para identificar o cluster como parte do conjunto.
Crie o cluster. Pode adicionar argumentos e usar etiquetas diferentes.
gcloud dataproc clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --region=${REGION} \ --bucket=${BUCKET} \ --labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Envie tarefas para clusters
Os exemplos seguintes da CLI Google Cloud e do gráfico acíclico orientado (DAG) do Apache Airflow enviam uma tarefa do Apache Pig para um cluster. As etiquetas de cluster são usadas para enviar a tarefa para um cluster ativo num conjunto de clusters.
gcloud
Envie uma tarefa do Apache Pig localizada no Cloud Storage. Escolha o cluster através de etiquetas.
gcloud dataproc jobs submit pig \ --region=${REGION} \ --file=gs://${BUCKET}/scripts/script.pig \ --cluster-labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Airflow
Envie uma tarefa do Apache Pig localizada no Cloud Storage através do Airflow. Escolha o cluster através de etiquetas.
from airflow import DAG from airflow.providers.google.cloud.operators.dataproc import DataprocSubmitJobOperator from datetime import datetime # Declare variables project_id=# e.g: my-project region="us-central1" dag_id='pig_wordcount' cluster_labels={"cluster-pool":${CLUSTER_POOL}, "cluster-state":"active"} wordcount_script="gs://bucket-name/scripts/wordcount.pig" # Define DAG dag = DAG( dag_id, schedule_interval=None, start_date=datetime(2023, 8, 16), catchup=False ) PIG_JOB = { "reference": {"project_id": project_id}, "placement": {"cluster_labels": cluster_labels}, "pig_job": {"query_file_uri": wordcount_script}, } wordcount_task = DataprocSubmitJobOperator( task_id='wordcount', region=region, project_id=project_id, job=PIG_JOB, dag=dag )
Alterne clusters
Atualize as etiquetas dos clusters associadas aos clusters que está a desativar. Estes exemplos usam a etiqueta
cluster-state=pendingfordeletion
para indicar que o cluster não está a receber novos envios de tarefas e está a ser substituído, mas pode usar a sua própria etiqueta para este fim.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"
Após a atualização da etiqueta do cluster, o cluster não recebe novos trabalhos, uma vez que os trabalhos são enviados para clusters num conjunto de clusters apenas com etiquetas
active
(consulte o artigo Envie trabalhos para clusters).Elimine os clusters que está a desativar depois de terminarem a execução das tarefas.