.
Kebijakan keamanan organisasi, aturan kepatuhan peraturan, dan pertimbangan lainnya dapat meminta Anda untuk "memutar" cluster Dataproc secara berkala dengan menghapus, lalu membuat ulang cluster sesuai jadwal. Sebagai bagian dari rotasi cluster, cluster baru dapat disediakan dengan versi image Dataproc terbaru sekaligus mempertahankan setelan konfigurasi cluster yang diganti.
Halaman ini menunjukkan cara menyiapkan cluster yang ingin Anda rotasiakan ("cluster yang dirotasi"), mengirimkan tugas ke cluster tersebut, lalu memutar cluster sesuai kebutuhan.
Rotasi cluster Image kustom: Anda dapat menerapkan penyesuaian sebelumnya atau baru ke image dasar Dataproc sebelumnya atau baru saat membuat ulang cluster image kustom.
Menyiapkan cluster yang dirotasi
Untuk menyiapkan cluster yang dirotasi, buat nama cluster unik dengan akhiran stempel waktu
untuk membedakan cluster sebelumnya dengan cluster baru, lalu lampirkan label ke cluster
yang menunjukkan apakah cluster merupakan bagian dari kumpulan cluster yang dirotasi dan secara aktif menerima pengiriman tugas baru. Contoh ini menggunakan label cluster-pool
dan
cluster-state=active
untuk tujuan ini, tetapi Anda dapat menggunakan
nama label Anda sendiri.
Menetapkan variabel lingkungan:
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
Catatan:
- cluster-pool-name: Nama cluster pool yang terkait dengan satu atau beberapa cluster. Nama ini digunakan dalam nama cluster dan dengan label
cluster-pool
yang dilampirkan ke cluster untuk mengidentifikasi cluster sebagai bagian dari kumpulan.
- cluster-pool-name: Nama cluster pool yang terkait dengan satu atau beberapa cluster. Nama ini digunakan dalam nama cluster dan dengan label
Buat cluster. Anda dapat menambahkan argumen dan menggunakan label yang berbeda.
gcloud dataproc clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --region=${REGION} \ --bucket=${BUCKET} \ --labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Mengirim tugas ke cluster
Contoh Google Cloud CLI dan directed acyclic graph (DAG) Apache Airflow berikut mengirimkan tugas Apache Pig ke cluster. Label cluster digunakan untuk mengirimkan tugas ke cluster aktif dalam kumpulan cluster.
gcloud
Kirim tugas Apache Pig yang berada di Cloud Storage. Pilih cluster menggunakan label.
gcloud dataproc jobs submit pig \ --region=${REGION} \ --file=gs://${BUCKET}/scripts/script.pig \ --cluster-labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Airflow
Kirim tugas Apache Pig yang terletak di Cloud Storage menggunakan Airflow. Pilih cluster menggunakan label.
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 )
Rotasi cluster
Perbarui label cluster yang dilampirkan ke cluster yang Anda hentikan. Contoh ini menggunakan label
cluster-state=pendingfordeletion
untuk menunjukkan bahwa cluster tidak menerima pengiriman tugas baru dan sedang dirotasi, tetapi Anda dapat menggunakan label Anda sendiri untuk tujuan ini.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"
Setelah label cluster diperbarui, cluster tidak menerima tugas baru karena tugas dikirim ke cluster dalam kumpulan cluster hanya dengan label
active
(lihat Mengirim tugas ke cluster).Hapus cluster yang Anda putar setelah selesai menjalankan tugas.