Rotasi cluster

.

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 dirotasikan"), 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.

  1. 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.
  2. 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

  1. 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).

  2. Hapus cluster yang Anda putar setelah selesai menjalankan tugas.