מצב זמינות גבוהה

כשיוצרים אשכול של Managed Service for Apache Spark, אפשר להגדיר את האשכול במצב זמינות גבוהה (HA) של Hadoop על ידי ציון מספר המופעים הראשיים באשכול. אפשר לציין את מספר השרתים הראשיים רק בזמן יצירת האשכול.

בשלב הזה, Managed Service for Apache Spark תומך בשתי הגדרות ראשיות:

  • מנהל אחד (ברירת מחדל, לא HA)
  • ‫3 שרתים ראשיים (Hadoop HA)

השוואה בין מצב ברירת מחדל לבין מצב זמינות גבוהה של Hadoop

  • כשל ב-Compute Engine: במקרה הנדיר של כשל בלתי צפוי ב-Compute Engine, המכונות של Managed Service for Apache Spark יופעלו מחדש. הגדרת ברירת המחדל של מאסטר יחיד ב-Managed Service for Apache Spark מיועדת לשחזור ולהמשך עיבוד של עבודה חדשה במקרים כאלה, אבל משימות שנמצאות בתהליך בהכרח ייכשלו ויהיה צורך לנסות אותן מחדש, ולא תהיה גישה ל-HDFS עד שצומת NameNode היחיד ישוחזר באופן מלא בהפעלה מחדש. במצב HA, מוגדרים HDFS High Availability ו-YARN High Availability כדי לאפשר פעולות YARN ו-HDFS ללא הפרעה, למרות כשלים או הפעלות מחדש של צומת יחיד.

  • סיום של תהליך ה-driver של משימה: תהליך ה-driver או התוכנית הראשית של כל משימה שמריצים עדיין מייצג נקודת כשל פוטנציאלית יחידה, אם נכונות המשימה תלויה בהרצה מוצלחת של תוכנית ה-driver. משימות שנשלחות דרך Dataproc Jobs API לא נחשבות לזמינות גבוהה, והן עדיין יסתיימו אם הצומת הראשי שמריץ את תוכניות מנהל המשימות המתאימות ייכשל. כדי שעבודות בודדות יהיו עמידות בפני כשלים בצומת יחיד באמצעות אשכול Cloud Dataproc עם זמינות גבוהה, העבודה צריכה 1) לפעול ללא תוכנת מנהל התקן סינכרונית או 2) להפעיל את תוכנת מנהל ההתקן עצמה בתוך קונטיינר YARN ולהיכתב כך שתטפל בהפעלות מחדש של תוכנת מנהל ההתקן. במאמר הפעלת Spark ב-YARN יש דוגמה לאופן שבו תוכנות דרייבר שאפשר להפעיל מחדש יכולות לפעול בתוך קונטיינרים של YARN כדי לספק סבילות לתקלות.

  • כשל אזורי: כמו בכל האשכולות של Managed Service for Apache Spark, כל הצמתים באשכול High Availability נמצאים באותו אזור. אם יש כשל שמשפיע על כל הצמתים באזור, לא תהיה אפשרות לצמצם את ההשפעה של הכשל.

שמות המכונות

שם המאסטר שמוגדר כברירת מחדל הוא cluster-name-m, ושמות המאסטרים של HA הם cluster-name-m-0, ‏ cluster-name-m-1 ו-cluster-name-m-2.

Apache ZooKeeper

באשכול HA Managed Service for Apache Spark, ‏ רכיב Zookeeper מותקן אוטומטית בצמתי הראשיים של האשכול. כל השרתים הראשיים משתתפים באשכול ZooKeeper, שמאפשר מעבר אוטומטי לגיבוי (failover) לשירותי Hadoop אחרים.

HDFS

באשכול רגיל של Managed Service for Apache Spark:

  • cluster-name-m runs:
    • NameNode
    • Secondary NameNode

באשכול Managed Service for Apache Spark עם זמינות גבוהה:

  • cluster-name-m-0 ו-cluster-name-m-1 מריצים:
    • NameNode
    • ZKFailoverController
  • כל המאסטרים מריצים JournalNode
  • אין Secondary NameNode

פרטים נוספים על הרכיבים מופיעים במסמכי התיעוד בנושא זמינות גבוהה של HDFS.

YARN

באשכול רגיל של Managed Service for Apache Spark, ‏ cluster-name-m מפעיל את ResourceManager.

באשכול Managed Service for Apache Spark עם זמינות גבוהה, כל המאסטרים מריצים את ResourceManager.

פרטים נוספים על הרכיבים מופיעים במסמכי התיעוד בנושא זמינות גבוהה ב-YARN.

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

המסוף

  • פותחים את הדף Managed Service for Apache Spark Create cluster.
  • בקטע Define your cluster shape (הגדרת הצורה של האשכול), בוחרים באפשרות High availability (זמינות גבוהה).
  • כברירת מחדל, ההגדרות של צומת ה-driver זהות להגדרות של העובד הראשי. בקטע הגדרה נוספת, אפשר לערוך את צומת הדרייבר כדי לבטל את הסימון של התיבה צומת הדרייבר שמוגדר כברירת מחדל זהה לצומת העובד הראשי, ואז לציין את ההגדרות של צומת הדרייבר.

פקודת gcloud

כדי ליצור אשכול HA באמצעות gcloud dataproc clusters create, מריצים את הפקודה הבאה:
gcloud dataproc clusters create cluster-name \
    --region=region \
    --num-masters=3 \
    ... other args

‫API בארכיטקטורת REST

כדי ליצור אשכול HA, משתמשים ב-API‏ clusters.create ומגדירים את masterConfig.numInstances ל-3.