Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
בדף הזה מפורט מידע לפתרון בעיות שעלולות לקרות במהלך עדכון או שדרוג של סביבות Managed Service for Apache Airflow.
מידע על פתרון בעיות שקשורות ליצירת סביבות מופיע במאמר פתרון בעיות ביצירת סביבות.
כשמעדכנים סביבות של Managed Airflow, רוב הבעיות נובעות מהסיבות הבאות:
- בעיות בהרשאות של חשבון שירות
- בעיות בתלות ב-PyPI
- גודל מסד הנתונים של Airflow
אין הרשאות מספיקות לעדכן או לשדרג סביבה
אם ל-Managed Airflow אין מספיק הרשאות כדי לעדכן או לשדרג סביבה, מוצגת הודעת השגיאה הבאה:
ERROR: (gcloud.composer.environments.update) PERMISSION_DENIED: The caller does not have permission
פתרון: מקצים תפקידים גם לחשבון שלכם וגם לחשבון השירות של הסביבה, כמו שמתואר במאמר בנושא בקרת גישה.
לחשבון השירות של הסביבה אין הרשאות מספיקות
כשיוצרים סביבת Managed Airflow, מציינים חשבון שירות שמבצע את רוב הפעולות בסביבה. אם לחשבון השירות הזה אין מספיק הרשאות לפעולה המבוקשת, המערכת של Managed Airflow מציגה שגיאה:
UPDATE operation on this environment failed 3 minutes ago with the
following error message:
Composer Backend timed out. Currently running tasks are [stage:
CP_COMPOSER_AGENT_RUNNING
description: "No agent response published."
response_timestamp {
seconds: 1618203503
nanos: 291000000
}
].
הפתרון: מקצים תפקידים לחשבון Google ולחשבון השירות של הסביבה, כמו שמתואר במאמר בנושא בקרת גישה.
מסד הנתונים של Airflow גדול מדי ואי אפשר לבצע את הפעולה
יכול להיות שפעולת שדרוג לא תצליח כי גודל מסד הנתונים של Airflow גדול מדי.
אם גודל מסד הנתונים של Airflow גדול מ-20GB, Managed Airflow מציג את השגיאה הבאה:
Airflow database uses more than 20 GB. Please clean the database before upgrading.
הפתרון: מבצעים ניקוי של מסד הנתונים של Airflow, כמו שמתואר במאמר ניקוי מסד הנתונים של Airflow.
שדרוג לגרסה חדשה של Managed Airflow נכשל בגלל קונפליקטים בחבילת PyPI
כשמשדרגים סביבה עם חבילות PyPI מותאמות אישית שהותקנו, יכול להיות שתיתקלו בשגיאות שקשורות לקונפליקטים בחבילות PyPI. יכול להיות שהסיבה לכך היא שב-Airflow build החדש יש גרסאות עדכניות יותר של חבילות שהותקנו מראש. זה יכול לגרום לקונפליקטים של תלות בחבילות PyPI שהתקנתם בסביבה שלכם.
הפתרון:
- כדי לקבל מידע מפורט על התנגשויות בין חבילות, מריצים בדיקת שדרוג.
- הגבלות הגרסה של חבילות PyPI מותאמות אישית שהותקנו. לדוגמה, במקום לציין גרסה בתור
==1.0.1, מציינים אותה בתור>=1.0.1. - לקבלת מידע נוסף על שינוי דרישות הגרסה כדי לפתור בעיות של תלות סותרת, אפשר לעיין במסמכי העזרה של pip.
בדיקת אזהרות על העברה שנכשלה
כשמשדרגים את Airflow לגרסה חדשה יותר, לפעמים מוחלים אילוצים חדשים על מסד הנתונים של Airflow. אם אי אפשר להחיל את האילוצים האלה, Airflow יוצר טבלאות חדשות כדי לאחסן את השורות שלא ניתן להחיל עליהן את האילוצים. בממשק המשתמש של Airflow מוצגת הודעת אזהרה עד שמשנים את השם של טבלאות הנתונים שהועברו או עד שמוחקים אותן.
הפתרון:
אפשר להשתמש בשני ה-DAG הבאים כדי לבדוק את הנתונים שהועברו ולשנות את השם של הטבלאות.
ב-list_moved_tables_after_upgrade_dag DAG מופיעות שורות שהועברו מכל טבלה שבה לא ניתן היה להחיל אילוצים. בודקים את הנתונים ומחליטים אם רוצים לשמור אותם. כדי לשמור את הנתונים, צריך לתקן אותם באופן ידני במסד הנתונים של Airflow. לדוגמה, אפשר להוסיף מחדש את השורות עם הנתונים הנכונים.
אם אתם לא צריכים את הנתונים או שכבר תיקנתם אותם, אתם יכולים להריץ את rename_moved_tables_after_upgrade_dag DAG. ה-DAG הזה משנה את השם של הטבלאות שהועברו.
הטבלאות והנתונים שלהן לא נמחקים, כך שתוכלו לבדוק את הנתונים בשלב מאוחר יותר.