יצירה מחדש ועדכון של אשכול Dataproc

יצירה מחדש ועדכון של אשכול

אפשר להשתמש בכלי gcloud של שורת הפקודה או ב-Dataproc API כדי להעתיק הגדרה מקלאסטר קיים, לעדכן את ההגדרה המועתקת ואז ליצור קלאסטר חדש עם ההגדרה המעודכנת.

‫CLI של gcloud

ההוראות לדוגמה מראות איך לעדכן את הגדרת גרסת האימג' בהגדרת אשכול. אפשר לשנות את הדוגמה כדי לעדכן הגדרות שונות של תצורת האשכול.

  1. הגדרת משתנים.
    export PROJECT=project-id
    export REGION=region
    export OLD_CLUSTER=old-cluster-name
    export NEW_CLUSTER=new-cluster-name
    export NEW_IMAGE_VERSION=image-version (for example, '2.2-debian12')
    
  2. מייצאים את הגדרות האשכול הקיים (הישן) לקובץ YAML.
    gcloud dataproc clusters export $OLD_CLUSTER \
        --project=$PROJECT \
        --region=$REGION > "${OLD_CLUSTER}-config.yaml"
  3. מעדכנים את ההגדרה. בדוגמה הבאה משתמשים בפקודה sed כדי לעדכן את גרסת התמונה.
    sed -E "s|(^[[:blank:]]+)imageVersion: .+|\1imageVersion: ${NEW_IMAGE_VERSION}|g" "${OLD_CLUSTER}-config.yaml" | sed -E '/^[[:blank:]]+imageUri: /d' > "${NEW_CLUSTER}-config-updated.yaml"
  4. יוצרים אשכול חדש עם שם חדש וההגדרה המעודכנת.
    gcloud dataproc clusters import $NEW_CLUSTER \
        --project=$PROJECT \
        --region=$REGION \
        --source="${NEW_CLUSTER}-config-updated.yaml"
  5. אחרי שמוודאים שעומסי העבודה פועלים באשכול החדש ללא בעיות, מוחקים את האשכול הקיים (הישן). חשוב: בשלב הזה נמחקים כל הנתונים שמאוחסנים ב-HDFS ובדיסק המקומי באשכול.
    gcloud dataproc clusters delete $OLD_CLUSTER \
        --project=$PROJECT \
        --region=$REGION

API ל-REST

בדוגמה להוראות מוצג עדכון של שם האשכול והגדרות גרסת התמונה בהגדרת אשכול. אפשר לשנות את משתני הדוגמה כדי לעדכן הגדרות שונות של תצורת האשכול.

  1. הגדרת משתנים.
    export PROJECT=project-id
    export REGION=region
    export OLD_CLUSTER=old-cluster-name
    export NEW_CLUSTER=new-cluster-name
    export NEW_IMAGE_VERSION=image-version (for example, '2.2-debian12')
    
    
  2. מייצאים את הגדרת האשכול הקיימת (הישנה) לקובץ JSON.
    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"  "https://dataproc.googleapis.com/v1/projects/${PROJECT}/regions/${REGION}/clusters/${OLD_CLUSTER}?alt=json" > "${OLD_CLUSTER}-config.json"
  3. מעדכנים את ההגדרה. בדוגמה הבאה משתמשים בפקודה jq כדי לעדכן את שם האשכול ואת גרסת התמונה.
    jq ".clusterName = \"${NEW_CLUSTER}\" | .config.softwareConfig.imageVersion=\"${NEW_IMAGE_VERSION}\" | del(.config.workerConfig.imageUri) | del(.config.masterConfig.imageUri)" "${OLD_CLUSTER}-config.json" > "${NEW_CLUSTER}-config-updated.json"
  4. מייבאים את הגדרת האשכול המעודכנת כדי ליצור אשכול חדש עם ההגדרה המעודכנת.
    curl -i -X POST  -H "Authorization: Bearer $(gcloud auth print-access-token)"  -H "Content-Type: application/json; charset=utf-8" -d "@${NEW_CLUSTER}-config-updated.json" "https://dataproc.googleapis.com/v1/projects/${PROJECT}/regions/${REGION}/clusters?alt=json"
  5. אחרי שמוודאים שעומסי העבודה פועלים באשכול החדש ללא בעיות, מוחקים את האשכול הקיים (הישן). חשוב: בשלב הזה נמחקים כל הנתונים שמאוחסנים ב-HDFS ובדיסק המקומי באשכול.
    curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://dataproc.googleapis.com/v1/projects/${PROJECT}/regions/${REGION}/clusters/${OLD_CLUSTER}"
    

המסוף

במסוף אין תמיכה ביצירה מחדש של אשכול על ידי ייבוא של הגדרת אשכול.