Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
בדף הזה מוסבר אילו נתונים של הסביבה שלכם מאוחסנים ב-Cloud Storage על ידי Managed Service for Apache Airflow.
כשיוצרים סביבה, Managed Airflow יוצר קטגוריה של Cloud Storage ומשייך את הקטגוריה לסביבה. שם הקטגוריה מבוסס על האזור, השם ומזהה רנדומלי של הסביבה, כמו us-central1-b1-6efabcde-bucket.
Managed Airflow מסנכרן תיקיות ספציפיות בדלי של הסביבה עם רכיבי Airflow שפועלים בסביבה. לדוגמה, כשמעדכנים קובץ עם הקוד של Airflow DAG בדלי של הסביבה, גם רכיבי Airflow מקבלים את הגרסה המעודכנת. Managed Airflow משתמש ב-Cloud Storage FUSE לסנכרון.
תיקיות בקטגוריה של Cloud Storage
| תיקייה | נתיב האחסון | ספרייה ממופה | תיאור |
|---|---|---|---|
| DAG | gs://bucket-name/dags |
/home/airflow/gcs/dags |
מאחסן את ה-DAGs של הסביבה. |
| יישומי פלאגין | gs://bucket-name/plugins |
/home/airflow/gcs/plugins |
מאחסן את הפלאגינים המותאמים אישית, כמו אופרטורים, hooks, חיישנים או ממשקים מותאמים אישית של Airflow. |
| נתונים | gs://bucket-name/data |
/home/airflow/gcs/data |
שמירת הנתונים שהמשימות יוצרות ומשתמשות בהם. |
| יומנים | gs://bucket-name/logs |
/home/airflow/gcs/logs |
אחסון יומני Airflow של משימות. היומנים זמינים גם בממשק המשתמש של Airflow ובכרטיסייה Logs במסוף Google Cloud . |
Managed Airflow מסנכרן תיקיות בכיוון אחד: מה-bucket לרכיבי Airflow. סנכרון חד-כיווני פירושו ששינויים מקומיים בתיקיות האלה ברכיב Airflow נמחקים.
סנכרון הנתונים הוא עקביות הדרגתית. כדי לשלוח הודעות ממפעיל אחד למפעיל אחר, צריך להשתמש ב-XComs.
שיקולים לגבי קיבולת
הנתונים מהתיקיות dags/, plugins/ ו-data/ מסונכרנים עם מתזמן(או מתזמנים) ועובדים של Airflow.
ב-Airflow 2, התוכן של התיקייה plugins/ מסונכרן גם עם שרת האינטרנט של Airflow. ב-Airflow 1, התוכן של התיקיות dags/ ו-plugins/ מסונכרן עם שרת האינטרנט של Airflow רק אם השבתתם את האפשרות DAG Serialization. אחרת, הסנכרון לא מתבצע.
ככל שמכניסים יותר נתונים לתיקיות האלה, כך נתפס יותר מקום באחסון המקומי של רכיבי Airflow. שמירת יותר מדי נתונים ב-dags/ וב-plugins/ עלולה לשבש את הפעילות שלכם ולהוביל לבעיות כמו:
לעובד או למתזמן נגמר האחסון המקומי והם מוצאים מהמערכת בגלל שאין מספיק מקום בדיסק המקומי של הרכיב.
סנכרון של קבצים מהתיקיות
dags/ו-plugins/לעובדים ולמתזמנים נמשך זמן רב.אי אפשר לסנכרן קבצים מהתיקיות
dags/ו-plugins/עם העובדים והמתזמנים. לדוגמה, אתם מאחסנים קובץ בנפח 2GB בתיקייהdags/, אבל הדיסק המקומי של Airflow worker יכול להכיל רק 1GB. במהלך הסנכרון, נגמר לעובד הזיכרון המקומי והסנכרון לא יכול להסתיים.
תיקיות של תרשימי DAG ותוספים
כדי למנוע כשלים בהרצת DAG, מאחסנים את ה-DAG, את הפלאגינים ואת מודולי Python בתיקיות dags/ או plugins/, גם אם מודולי Python לא מכילים DAG או פלאגינים.
לדוגמה, אתם משתמשים ב-DataFlowPythonOperator שמתייחס לpy_file של Dataflow. התיקייה py_file לא מכילה DAG או פלאגינים, אבל עדיין צריך לאחסן אותה בתיקייה dags/ או plugins/.
תיקיית נתונים
יש תרחישים שבהם קבצים מסוימים מהתיקייה data/ מסונכרנים עם רכיב ספציפי של Airflow. לדוגמה, כש-Managed Service for Apache Airflow מנסה לקרוא קובץ מסוים בפעם הראשונה במהלך:
ניתוח DAG: כשקוראים קובץ בפעם הראשונה במהלך ניתוח DAG, Managed Service for Apache Airflow מסנכרן אותו עם המתזמן שמנתח את ה-DAG.
ביצוע DAG: כשקובץ נקרא בפעם הראשונה במהלך ביצוע DAG, Managed Service for Apache Airflow מסנכרן אותו עם העובד שמריץ את הביצוע.
לרכיבי Airflow יש נפח אחסון מקומי מוגבל, לכן כדאי למחוק קבצים שהורדתם כדי לפנות מקום בדיסק ברכיבים. שימו לב שגם נפח אחסון נדרש מקומי יכול לעלות באופן זמני אם יש לכם משימות מקבילות שמורידות את אותו קובץ לעובד Airflow יחיד.
תיקיית היומנים
התיקייה logs/ מסונכרנת מעובדי Airflow אל מאגר (bucket) הסביבה באמצעות Cloud Storage API.
המיכסה של Cloud Storage API מחושבת לפי כמות הנתונים שהועברו, ולכן מספר המשימות של Airflow שהמערכת מריצה יכול להגדיל את השימוש ב-Cloud Storage API: ככל שמריצים יותר משימות, קובצי היומן גדולים יותר.
סנכרון עם שרת האינטרנט
ב-Airflow 2 נעשה שימוש בסריאליזציה של DAG כברירת מחדל. התיקייה plugins/ מסונכרנת אוטומטית עם שרת האינטרנט, כך שאפשר לטעון את הפלאגינים דרך ממשק המשתמש של Airflow. אי אפשר להשבית את הסריאליזציה של DAG ב-Airflow 2.
ב-Airflow 1, סריאליזציה של DAG נתמכת ומופעלת כברירת מחדל ב-Managed Airflow.
- כשסריאליזציית ה-DAG מופעלת, הקבצים מהתיקיות
dags/ו-plugins/לא מסונכרנים עם שרת האינטרנט. - כשסריאליזציית ה-DAG מושבתת, הקבצים מ-
dags/ומ-plugins/מסונכרנים עם שרת האינטרנט.