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

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

נכון לעכשיו, Dataproc תומך בשתי תצורות של צמתים ראשיים:

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

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

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

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

  • כשל אזורי: כמו בכל אשכולות Dataproc, כל הצמתים באשכול High Availability נמצאים באותו אזור. אם יש כשל שמשפיע על כל הצמתים באזור, לא תהיה אפשרות לפתור את הכשל.

שמות של מכונות

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

Apache ZooKeeper

באשכול Dataproc עם זמינות גבוהה, רכיב Zookeeper מותקן באופן אוטומטי בצמתי הראשיים של האשכול. כל השרתים הראשיים משתתפים באשכול ZooKeeper, שמאפשר יתירות כשל אוטומטית לשירותי Hadoop אחרים.

HDFS

באשכול Dataproc רגיל:

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

באשכול Dataproc עם זמינות גבוהה:

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

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

YARN

באשכול Dataproc רגיל, ‏cluster-name-m מפעיל את ResourceManager.

ב-Dataproc cluster עם זמינות גבוהה, כל המאסטרים מריצים את ResourceManager.

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

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

פקודת 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.

המסוף

כדי ליצור אשכול HA, בוחרים באפשרות 'זמינות גבוהה (3 מאסטרים, N עובדים)' בקטע 'סוג האשכול' בחלונית 'הגדרת אשכול' בדף יצירת אשכול ב-Dataproc.