רוטציה של אשכולות

.

מדיניות האבטחה של הארגון, כללי התאימות לתקנות ושיקולים אחרים יכולים להוביל אתכם לבצע 'רוטציה' באשכולות של Managed Service for Apache Spark במרווחי זמן קבועים, על ידי מחיקה ואז יצירה מחדש של אשכולות לפי לוח זמנים. כחלק מהחלפת האשכולות, אפשר להקצות אשכולות חדשים עם הגרסאות העדכניות ביותר של תמונות Managed Service for Apache Spark, תוך שמירה על הגדרות התצורה של האשכולות שהוחלפו.

בדף הזה מוסבר איך להגדיר אשכולות שמתכננים להחליף ("אשכולות שהוחלפו"), לשלוח אליהם משימות ואז להחליף את האשכולות לפי הצורך.

רוטציה של אשכול תמונות בהתאמה אישית: אפשר להחיל התאמות אישיות קודמות או חדשות על תמונת בסיס קודמת או חדשה של Managed Service for Apache Spark כשיוצרים מחדש את אשכול התמונות בהתאמה אישית.

הגדרת אשכולות מסובבים

כדי להגדיר אשכולות מסובבים, צריך ליצור שמות ייחודיים לאשכולות עם סיומת של חותמת זמן כדי להבדיל בין אשכולות קודמים לאשכולות חדשים, ואז לצרף תוויות לאשכולות שמציינות אם אשכול הוא חלק ממאגר אשכולות מסובבים ומקבל באופן פעיל שליחות של משימות חדשות. בדוגמה הזו אנחנו משתמשים בתוויות cluster-pool ו-cluster-state=active למטרות האלה, אבל אתם יכולים להשתמש בשמות תוויות משלכם.

  1. הגדרת משתני סביבה:

    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
    

    הערות:

    • cluster-pool-name: השם של מאגר האשכולות שמשויך לאשכול אחד או יותר. השם הזה משמש בשם האשכול ובתווית cluster-pool שמצורפת לאשכול כדי לזהות את האשכול כחלק מהמאגר.
  2. יוצרים את האשכול. אפשר להוסיף ארגומנטים ולהשתמש בתוויות שונות.

    gcloud dataproc clusters create ${CLUSTER_NAME} \
      --project=${PROJECT_ID} \
      --region=${REGION} \
      --bucket=${BUCKET} \
      --labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
    

שליחת עבודות לאשכולות

בדוגמאות הבאות של CLI של Google Cloud ושל גרף אציקלי מכוון (DAG) של Apache Airflow, מוגשת משימת Apache Pig לאשכול. תוויות של אשכולות משמשות לשליחת העבודה לאשכול פעיל במאגר אשכולות.

gcloud

שליחת משימת Apache Pig שנמצאת ב-Cloud Storage. בוחרים את האשכול באמצעות תוויות.

gcloud dataproc jobs submit pig \
    --region=${REGION} \
    --file=gs://${BUCKET}/scripts/script.pig \
    --cluster-labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
  

Airflow

שליחת משימת Apache Pig שנמצאת ב-Cloud Storage באמצעות Airflow. בוחרים את האשכול באמצעות תוויות.

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
)

סיבוב של אשכולות

  1. מעדכנים את תוויות האשכולות שמצורפות לאשכולות שמוציאים מהרוטציה. בדוגמה הזו נעשה שימוש בתווית cluster-state=pendingfordeletion כדי לציין שהאשכול לא מקבל הגשות חדשות של משימות ושהוא יוצא משימוש, אבל אתם יכולים להשתמש בתווית משלכם למטרה הזו.

    gcloud dataproc clusters update ${CLUSTER_NAME} \
        --region=${REGION} \
        --update-labels="cluster-state=pendingfordeletion"
    

    אחרי שמעדכנים את התווית של האשכול, האשכול לא מקבל משימות חדשות כי המשימות נשלחות לאשכולות במאגר אשכולות עם תוויות active בלבד (ראו שליחת משימות לאשכולות).

  2. מוחקים את האשכולות שמוציאים משימוש אחרי שהם מסיימים להריץ את העבודות.