העברת סביבות ל-Managed Airflow (דור 3) (סקריפט להעברה)

Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)

בדף הזה מוסבר איך להעביר DAG, נתונים והגדרות מסביבת Managed Airflow (דור 2) קיימת לסביבת Managed Airflow (דור 3) חדשה באמצעות סקריפט ההעברה.

מאת אל ‏Method מדריך
‫Managed Airflow (דור 3), ‏ Airflow 2 ‫Managed Airflow (דור 3), Airflow 3 העברה ידנית זה לצד זה מדריך להעברה ידנית
‫Managed Airflow (דור 2) ‫Managed Airflow (דור 3) זה לצד זה, באמצעות סקריפט ההעברה במדריך הזה
‫Managed Airflow (דור 2) ‫Managed Airflow (דור 3) זו לצד זו, באמצעות תמונות מצב מדריך להעברת תמונות מצב
‫Managed Airflow (Legacy Gen 1), Airflow 2 ‫Managed Airflow (דור 3) זו לצד זו, באמצעות תמונות מצב מדריך להעברת תמונות מצב
‫Managed Airflow (Legacy Gen 1), Airflow 2 ‫Managed Airflow (דור 2) זו לצד זו, באמצעות תמונות מצב מדריך להעברת תמונות מצב
‫Managed Airflow (Legacy Gen 1), Airflow 2 ‫Managed Airflow (דור 2) העברה ידנית זה לצד זה מדריך להעברה ידנית
‫Managed Airflow (Legacy Gen 1), Airflow 1 ‫Managed Airflow (דור 2), ‏ Airflow 2 זו לצד זו, באמצעות תמונות מצב מדריך להעברת תמונות מצב
‫Managed Airflow (Legacy Gen 1), Airflow 1 ‫Managed Airflow (דור 2), ‏ Airflow 2 העברה ידנית זה לצד זה מדריך להעברה ידנית
‫Managed Airflow (Legacy Gen 1), Airflow 1 ‫Managed Airflow (Legacy Gen 1), Airflow 2 העברה ידנית זה לצד זה מדריך להעברה ידנית

מידע על סקריפט ההעברה

סקריפט המיגרציה הוא סקריפט Python למיגרציות זו לצד זו, שמבצע אוטומציה של תהליך המיגרציה מ-Managed Airflow (דור 2) ל-Managed Airflow (דור 3). הוא משתמש בתמונות מצב של הסביבה כדי להעביר את ההגדרה של הסביבה לסביבה החדשה.

הסקריפט מבצע את הפעולות הבאות:

  1. קבלת ההגדרה של סביבת Managed Airflow (דור 2).

  2. יוצר סביבת Managed Airflow (דור 3) עם הגדרה שתואמת להגדרה שהתקבלה.

    מכיוון שלסביבות Managed Airflow (דור 3) יש ארכיטקטורה שונה, יכול להיות שיהיה צורך לשנות חלק מהפרמטרים כדי להתאים להבדלים. אפשר גם לשנות את רוב הפרמטרים של הסביבה בהמשך.

  3. הפונקציה משהה את כל ה-DAG בסביבת Managed Airflow (דור 2) בזה אחר זה. רק DAG שההשעיה שלו בוטלה בסביבת Managed Airflow (דור 2) תבוטל בהמשך.

  4. שמירת תמונת מצב של סביבת המקור Managed Airflow (דור 2). התמונה המהירה נשמרת במיקום ברירת המחדל לתמונות מהירות, בדלי של סביבת Managed Airflow (דור 2).

  5. טוען את התמונה המהירה לסביבת Managed Airflow (דור 3).

    הסקריפט לא בודק את התאימות של חבילות PyPI מותאמות אישית, משתני סביבה ושינויים של אפשרויות הגדרה ב-Airflow עם סביבת Managed Airflow (דור 3).

    במקרה של התנגשויות, ההעברה נכשלת אחרי שסביבת Managed Airflow (דור 3) נוצרת, במהלך הטעינה של התמונה. במקרה כזה, אפשר לשנות את ההגדרה של סביבת Managed Airflow (דור 2) כדי לפתור את ההתנגשות, או להעביר את הנתונים בלי סקריפט ההעברה ולדלג על טעינה של חבילות PyPI בהתאמה אישית, משתני סביבה או שינויים בהגדרות של Airflow כשמטעינים את התמונה.

  6. הסקריפט מבטל את ההשהיה של ה-DAG בסביבת Managed Airflow (דור 3). אם חלק מה-DAG כבר היו מושהים לפני שהפעלתם את הסקריפט, הם יישארו מושהים.

הסקריפט כולל את המגבלות הבאות:

  • הסקריפט תמיד יוצר סביבה חדשה של Managed Airflow (דור 3). אי אפשר לטעון את תמונת המצב לסביבת Managed Airflow (דור 3) קיימת. כדי לעשות זאת, אתם יכולים להעביר באמצעות תמונות מצב, בלי להשתמש בסקריפט ההעברה.

  • הסקריפט יוצר סביבת Managed Airflow (דור 3) רק באותו אזור ובאותו פרויקט כמו סביבת Managed Airflow (דור 2).

  • אפשר לטעון תמונות מצב רק לגרסה זהה או מאוחרת יותר של Airflow. לדוגמה, אי אפשר לטעון תמונת מצב מ-Airflow 2.10.2 ל-Airflow 2.9.3.

  • אפשר להעביר רק סביבות של Managed Airflow (דור 2) באמצעות סקריפט ההעברה.

לפני שמתחילים

  • הסקריפט להעברה יוצר סביבה, ואז שומר ומטען תמונת מצב, ולכן תהליך ההעברה יכול להימשך יותר משעה.

  • הסקריפט משתמש בתמונות מצב. יש תמיכה בתמונות מצב

  • ב-Managed Airflow (Gen 2) מגרסה 2.0.9 ואילך.

  • בחשבון שלכם נדרש תפקיד IAM שיכול ליצור סביבות, לשמור תמונות מצב ולטעון תמונות מצב.

  • הגודל המקסימלי של מסד הנתונים של Airflow שתומך בתמונות מצב הוא 20GB. אם מסד הנתונים של הסביבה גדול מ-20GB, צריך להקטין את הגודל של מסד הנתונים של Airflow.

  • כדי ליצור תמונות מצב, המספר הכולל של האובייקטים בתיקיות /dags, /plugins ו-/data בקטגוריה של הסביבה צריך להיות פחות מ-100,000.

  • אם אתם משתמשים במנגנון XCom להעברת קבצים, חשוב לוודא שאתם משתמשים בו בהתאם להנחיות של Airflow. העברה של קבצים גדולים או של מספר גדול של קבצים באמצעות XCom משפיעה על הביצועים של מסד הנתונים של Airflow, ויכולה לגרום לכשלים בטעינת תמונות מצב או בשדרוג הסביבה. כדאי לשקול שימוש בחלופות כמו Cloud Storage להעברת נפחים גדולים של נתונים.

מעבר ל-Managed Airflow (דור 3)

בקטע הזה מתואר תהליך ההעברה באמצעות סקריפט ההעברה.

ההבדלים בין Managed Airflow (דור 2) לבין Managed Airflow (דור 3)

אפשר לעיין ברשימת ההבדלים בין Managed Airflow (דור 2) לבין Managed Airflow (דור 3).

מוודאים שהסביבה לא משתמשת בתכונות שעדיין לא זמינות ב-Managed Airflow (דור 3), ושאתם יודעים איך להשתמש בתכונות שספציפיות ל-Managed Airflow (דור 3) ואיך להגדיר אותן.

מוודאים שקובצי ה-DAG תואמים ל-Managed Airflow (דור 3)

כדי לוודא שקובצי ה-DAG תואמים ל-Managed Airflow (דור 3), כדאי לפעול לפי ההצעות הבאות:

  • רשימת החבילות בסביבת Managed Airflow (דור 3) עשויה להיות שונה מרשימת החבילות בסביבת Managed Airflow (דור 2). הבדלים כאלה עשויים להשפיע על התאימות של קובצי ה-DAG שלכם ל-Managed Airflow (דור 3).

  • ב-Managed Airflow (דור 3), האשכול של הסביבה נמצא בפרויקט הדייר. חשוב לוודא שגרפי ה-DAG שלכם תואמים לשינוי הזה. בפרט, KubernetesPodOperator עומסי העבודה ניתנים עכשיו להרחבה באופן עצמאי מהסביבה שלכם, ואי אפשר להשתמש בהגדרות של זיקה ל-Pod.

בדיקת התאימות של ההגדרות

אתם יכולים לבצע בדיקת שדרוג כדי לראות אם ההגדרה של סביבת Managed Airflow (דור 2) תואמת ל-Managed Airflow (דור 3). מומלץ לפתור את כל הסכסוכים שחוסמים את ההעברה ושמדווחים בבדיקה הזו לפני שמתחילים את ההעברה.

התקנת יחסי תלות של סקריפט

  • הסקריפט דורש Python מגרסה 3.8 ואילך.

  • סקריפט ההעברה משתמש ב-CLI של gcloud ובכלי השירות curl. צריך לוודא ששני כלי השירות מותקנים במחשב.

הורדת הסקריפט

מורידים את סקריפט ההעברה (composer_migrate.py) מהמאגר שלו ב-GitHub.

אישור ב-CLI של gcloud

אישור ב-CLI של gcloud:

gcloud auth login

תצוגה מקדימה של הפרמטרים של הסביבה החדשה

אפשר לראות תצוגה מקדימה של הפרמטרים של סביבת Managed Airflow (דור 3) לפני המעבר. כך אפשר לראות איך ההגדרה של סביבת Managed Airflow (דור 2) תואמת ל-Managed Airflow (דור 3).

אפשרויות ההגדרה של Airflow, חבילות PyPI מותאמות אישית ומשתני סביבה נטענים מתמונת המצב של הסביבה ולא מוצגים בתצוגה המקדימה.

הרחבה

מריצים את הפקודה הבאה:

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION \
    --dry_run

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

  • PROJECT_ID: מזהה הפרויקט.
  • COMPOSER_2_ENV: השם של סביבת Managed Airflow (דור 2).
  • LOCATION: האזור שבו נמצאת סביבת Managed Airflow (דור 2). סביבת Managed Airflow (דור 3) תיצור באותו אזור.
  • COMPOSER_3_AIRFLOW_VERSION: הגרסה של Airflow בסביבת Managed Airflow (דור 3). הגרסה הזו צריכה להיות זהה לגרסה בסביבת Managed Airflow (Gen 2) או גרסה עדכנית יותר, והיא צריכה להיות אחת מהגרסאות שזמינות ב-Managed Airflow (Gen 3).

דוגמה:

python3 composer_migrate.py \
    --project example-project \
    --location us-central1 \
    --source_environment example-composer-2-environment \
    --target_environment example-composer-3-environment \
    --target_airflow_version 2.10.2

בדיקת התקינות של הסביבה

מוודאים שהסביבה שלכם ב-Managed Airflow (דור 2) שרוצים להעביר תקינה.

אם הסביבה לא תקינה, תהליך ההעברה ייכשל אחרי יצירת סביבת Managed Airflow חדשה (דור 3), כי לא תהיה אפשרות ליצור תמונת מצב.

במאמר שימוש בלוח הבקרה של המעקב מוסבר איך לבדוק את התקינות של הסביבה ושל מסד הנתונים.

הפעלת סקריפט ההעברה

מריצים את הפקודה הבאה:

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION

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

  • PROJECT_ID: מזהה הפרויקט.
  • COMPOSER_2_ENV: השם של סביבת Managed Airflow (דור 2).
  • LOCATION: האזור שבו נמצאת סביבת Managed Airflow (דור 2). סביבת Managed Airflow (דור 3) תיצור באותו אזור.
  • COMPOSER_3_AIRFLOW_VERSION: הגרסה של Airflow בסביבת Managed Airflow (דור 3). הגרסה הזו צריכה להיות זהה לגרסה בסביבת Managed Airflow (Gen 2) או גרסה עדכנית יותר, והיא צריכה להיות אחת מהגרסאות שזמינות ב-Managed Airflow (Gen 3).

בדיקה אם יש שגיאות ב-DAG

  1. בממשק האינטרנט של Airflow, עוברים אל DAGs ובודקים אם יש שגיאות תחביר שדווחו ב-DAG.

  2. בודקים שהרצות ה-DAG מתוזמנות לשעה הנכונה.

  3. מחכים שהרצת ה-DAG תתבצע בסביבת Managed Airflow (דור 3) ובודקים אם היא הסתיימה בהצלחה. אם הפעלת DAG הסתיימה בהצלחה, אל תבטלו את ההשהיה שלה בסביבת Managed Airflow (דור 2). אם תעשו זאת, תתבצע הפעלת DAG לאותה שעה ולאותו תאריך בסביבת Managed Airflow (דור 2).

  4. אם הפעלת DAG ספציפי נכשלת, צריך לנסות לפתור את הבעיה ב-DAG עד שהוא יפעל בהצלחה ב-Managed Airflow (דור 3).

מעקב אחרי סביבת Managed Airflow (דור 3)

כדאי לעקוב אחרי סביבת Managed Airflow (דור 3) כדי לזהות בעיות פוטנציאליות, הפעלות של DAG שנכשלו ומצב כללי של הסביבה.

אם סביבת Managed Airflow (דור 3) פועלת ללא בעיות במשך תקופה מספיק ארוכה, כדאי למחוק את סביבת Managed Airflow (דור 2).

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