יצירת אשכול בכמה אזורים

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

כדאי להשתמש באשכול בכמה אזורים כשצריך ליצור או לשנות את קנה המידה של אשכול גדול, והקיבולת של אזור אחד לא מספיקה כדי לענות על הבקשה.

איך פועלים אשכולות בכמה אזורים

כשיוצרים אשכול בכמה אזורים, Managed Service for Apache Spark מקצה את צומתי האשכול באופן הבא:

מכיוון ש-Managed Service for Apache Spark מפיץ בקשות של worker VM בין כמה אזורים, יש פחות סיכוי שהבקשה שלכם תיחסם בגלל מגבלות קיבולת באזור אחד. כך אפשר למנוע שגיאות ZONE_RESOURCE_POOL_EXHAUSTED כשיוצרים או משנים את קנה המידה של אשכולות גדולים, אשכולות עם VM במודל Spot או עובדים משניים שניתנים להפסקה לפני הזמן, או אשכולות שמשתמשים בסוגי מכונות עם ביקוש גבוה.

דרישות ומגבלות

כדי ליצור אשכול בכמה אזורים, צריך להשתמש באחת מגרסאות התמונה הבאות או בגרסה מאוחרת יותר באותו מסלול של גרסת תמונה:

טראק של גרסת תמונה גרסת התמונה המינימלית הנתמכת
‎2.2.x 2.2.88
‎2.3.x 2.3.37
‎3.0.x 3.0.3

לאשכולות בכמה אזורים יש את המגבלות הבאות:

  • אי אפשר לציין גם הגדרה של אזור יחיד וגם הגדרה של כמה אזורים באותה בקשה ליצירת אשכול.
  • אי אפשר ליצור אשכול בכמה אזורים עם יותר מ-1,000 primary workers בבקשה הראשונית ליצירת האשכול. אם עומס העבודה שלכם דורש יותר מ-1,000 primary workers, צרו את האשכול עם 1,000 primary workers או פחות, ואז שנו את קנה המידה של האשכול אחרי שהוא נוצר.

עלויות של העברת נתונים ברשת

באשכול עם אזור אחד, כל המכונות הווירטואליות נמצאות באותו אזור, והתנועה ברשת שמשתמשת בכתובות IP פנימיות בין המכונות הווירטואליות באותו אזור מוצעת ללא תשלום. באשכול עם כמה אזורים, המכונות הווירטואליות של המאסטר וה-worker יכולות להיות באזורים שונים באותו מחוז. תנועה ברשת בין מכונות וירטואליות באזורים שונים באותו מחוז כרוכה בחיובים על העברת נתונים בין אזורים.

לפרטים על המחירים, קראו את המאמר תמחור של העברת נתונים בין מכונות וירטואליות ב- Google Cloud.

יצירת אשכול בכמה אזורים

אפשר ליצור אשכול בכמה אזורים באמצעות Google Cloud CLI או Dataproc API.

gcloud

כדי ליצור אשכול בכמה אזורים, מריצים את הפקודה gcloud dataproc clusters create עם הדגל --multizone. אל תציינו את הדגל --zone.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --multizone \
    --image-version=IMAGE_VERSION \
    --master-machine-type=MASTER_MACHINE_TYPE \
    --worker-machine-type=WORKER_MACHINE_TYPE \
    --num-workers=NUM_WORKERS

מחליפים את מה שכתוב בשדות הבאים:

  • ‫CLUSTER_NAME: שם האשכול.
  • ‫REGION: אזור זמין ב-Compute Engine לאשכול, למשל us-central1.
  • ‫IMAGE_VERSION: גרסת קובץ אימג' שתומכת באשכולות בכמה אזורים, כמו 2.3.37-debian12. מידע נוסף זמין במאמר דרישות ומגבלות.
  • ‫MASTER_MACHINE_TYPE: סוג המכונה של צומת המאסטר ב-Compute Engine, למשל n2-standard-4.
  • WORKER_MACHINE_TYPE: סוג המכונה ב-Compute Engine של צומתי ה-worker הראשיים, למשל n2-standard-4.
  • ‫NUM_WORKERS: מספר ה-primary workers באשכול. הערך הזה לא יכול להיות גדול מ-1000.

REST

כדי ליצור אשכול בכמה אזורים, שולחים בקשת clusters.create. באובייקט gceClusterConfig של הבקשה, משאירים את השדה zoneUri ריק ומגדירים את השדה multiZoneConfig.targetShape כ-ANY.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

תוכן בקשת JSON:

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "multiZoneConfig": {
        "targetShape": "ANY"
      }
    },
    "softwareConfig": {
      "imageVersion": "IMAGE_VERSION"
    },
    "masterConfig": {
      "numInstances": 1,
      "machineTypeUri": "MASTER_MACHINE_TYPE"
    },
    "workerConfig": {
      "numInstances": NUM_WORKERS,
      "machineTypeUri": "WORKER_MACHINE_TYPE"
    }
  }
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ‫REGION: אזור זמין ב-Compute Engine לאשכול, למשל us-central1.
  • ‫CLUSTER_NAME: שם האשכול.
  • ‫IMAGE_VERSION: גרסת תמונה שתומכת באשכולות בכמה אזורים, כמו 2.3.37-debian12. מידע נוסף זמין במאמר דרישות ומגבלות.
  • ‫MASTER_MACHINE_TYPE: סוג המכונה של צומת המאסטר ב-Compute Engine, למשל n2-standard-4.
  • ‫NUM_WORKERS: מספר ה-primary workers באשכול. הערך הזה לא יכול להיות גדול מ-1000.
  • WORKER_MACHINE_TYPE: סוג המכונה ב-Compute Engine של צומתי ה-worker הראשיים, למשל n2-standard-4.

המאמרים הבאים