Rotasi cluster

.

Kebijakan keamanan organisasi, aturan kepatuhan terhadap peraturan, dan pertimbangan lainnya dapat meminta Anda untuk "merotasi" 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 dari cluster yang diganti.

Halaman ini menunjukkan cara menyiapkan cluster yang akan dirotasi ("cluster dirotasi"), mengirim tugas ke cluster, lalu merotasi cluster sesuai kebutuhan.

Rotasi cluster gambar kustom: Anda dapat menerapkan penyesuaian sebelumnya atau baru ke gambar dasar Dataproc sebelumnya atau yang baru saat membuat ulang cluster gambar kustom.

Menyiapkan cluster yang dirotasi

Untuk menyiapkan cluster yang dirotasi, buat nama cluster yang unik dengan stempel waktu untuk membedakan cluster lama dengan cluster baru, lalu berikan label ke cluster yang menunjukkan apakah cluster merupakan bagian dari kumpulan cluster yang dirotasi dan secara aktif menerima kiriman 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 kumpulan cluster yang terkait dengan satu atau beberapa cluster. Nama ini digunakan pada 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"
    

Mengirimkan tugas ke cluster

Contoh Google Cloud CLI dan Apache Airflow directed acyclic graph (DAG) berikut mengirimkan tugas Apache Pig ke cluster. Label cluster digunakan untuk mengirimkan tugas ke cluster aktif dalam kumpulan cluster.

gcloud

Kirimkan 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

Kirimkan tugas Apache Pig yang ada 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
)

Putar cluster

  1. Perbarui label cluster yang dilampirkan ke cluster yang Anda putar. Contoh ini menggunakan label cluster-state=pendingfordeletion untuk menandakan bahwa cluster tidak menerima 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 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.