.
Kebijakan keamanan organisasi, aturan kepatuhan terhadap peraturan, dan pertimbangan lainnya dapat mendorong Anda untuk "merotasi" cluster Managed Service untuk Apache Spark secara berkala dengan menghapus, lalu membuat ulang cluster sesuai jadwal. Sebagai bagian dari rotasi cluster, cluster baru dapat disediakan dengan versi image Managed Service untuk Apache Spark terbaru sambil mempertahankan setelan konfigurasi cluster yang diganti.
Halaman ini menunjukkan cara menyiapkan cluster yang Anda rencanakan untuk dirotasi ("cluster yang dirotasi"), mengirimkan tugas ke cluster tersebut, lalu merotasi cluster sesuai kebutuhan.
Rotasi clusterimage kustom: Anda dapat menerapkan penyesuaian sebelumnya atau baru ke image dasar Managed Service untuk Apache Spark 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 dari cluster baru, lalu lampirkan label ke cluster yang menunjukkan apakah cluster tersebut 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 kumpulan cluster yang terkait dengan
satu atau beberapa cluster. Nama ini digunakan dalam nama cluster dan dengan label
cluster-poolyang dilampirkan ke cluster untuk mengidentifikasi cluster sebagai bagian dari kumpulan.
- cluster-pool-name: Nama kumpulan cluster 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"
Mengirimkan 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 berada 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 )
Merotasi cluster
Perbarui label cluster yang dilampirkan ke cluster yang Anda rotasi. Contoh ini menggunakan label
cluster-state=pendingfordeletionuntuk 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 akan menerima tugas baru karena tugas hanya dikirimkan ke cluster dalam kumpulan cluster dengan
activelabel saja (lihat Mengirimkan tugas ke cluster).Hapus cluster yang Anda rotasi setelah cluster selesai menjalankan tugas.