Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
המדריך הזה הוא גרסה שונה של המדריך Run a Data Analytics DAG in Google Cloud. במדריך הזה מוסבר איך לקשר את סביבת Managed Airflow ל-Amazon Web Services כדי להשתמש בנתונים שמאוחסנים שם. במדריך הזה נסביר איך להשתמש ב-Managed Airflow כדי ליצור DAG של Apache Airflow. ה-DAG מצטרף לנתונים ממערך נתונים ציבורי של BigQuery ומקובץ CSV שמאוחסן בקטגוריה של Amazon Web Services (AWS) S3, ואז מריץ משימת אצווה של Managed Service for Apache Spark כדי לעבד את הנתונים שצורפו.
מערך הנתונים הציבורי של BigQuery במדריך הזה הוא ghcn_d, מסד נתונים משולב של סיכומי אקלים ברחבי העולם. קובץ ה-CSV מכיל מידע על התאריכים והשמות של חגים בארה"ב משנת 1997 עד 2021.
השאלה שאנחנו רוצים לענות עליה באמצעות ה-DAG היא: "מה הייתה הטמפרטורה בשיקגו בחג ההודיה ב-25 השנים האחרונות?"
מטרות
- יצירת סביבת Managed Airflow בהגדרת ברירת המחדל
- יצירת קטגוריה ב-AWS S3
- יצירת מערך נתונים ריק ב-BigQuery
- יצירת קטגוריה של Cloud Storage
- יוצרים ומריצים DAG שכולל את המשימות הבאות:
- טעינת מערך נתונים חיצוני מ-S3 ל-Cloud Storage
- טעינת מערך נתונים חיצוני מ-Cloud Storage ל-BigQuery
- צירוף של שני מערכי נתונים ב-BigQuery
- הרצת משימת ניתוח נתונים ב-PySpark
לפני שמתחילים
ניהול הרשאות ב-AWS
פועלים לפי ההוראות שבקטע 'יצירת מדיניות באמצעות כלי העריכה החזותי' במדריך יצירת מדיניות IAM ב-AWS כדי ליצור מדיניות IAM מותאמת אישית ל-AWS S3 עם ההגדרה הבאה:
- שירות: S3
- ListAllMyBuckets (
s3:ListAllMyBuckets), לצפייה בקטגוריית S3 - CreateBucket (
s3:CreateBucket), ליצירת קטגוריה - PutBucketOwnershipControls (
s3:PutBucketOwnershipControls), ליצירת קטגוריה - ListBucket (
s3:ListBucket), למתן הרשאה להצגת רשימה של אובייקטים בקטגוריית S3 - PutObject (
s3:PutObject), להעלאת קבצים לקטגוריה - GetBucketVersioning (
s3:GetBucketVersioning), למחיקת אובייקט בקטגוריה - DeleteObject (
s3:DeleteObject), למחיקת אובייקט בדלי - ListBucketVersions (
s3:ListBucketVersions), למחיקת קטגוריה - DeleteBucket (
s3:DeleteBucket), למחיקת קטגוריה - משאבים: בוחרים באפשרות 'כל' לצד 'מאגר' ו'אובייקט' כדי להעניק הרשאות לכל המשאבים מהסוג הזה.
- תג: ללא
- שם: TutorialPolicy
למידע נוסף על כל הגדרה, אפשר לעיין ברשימת הפעולות שנתמכות ב-Amazon S3.
הפעלת ממשקי ה-API
מפעילים את ממשקי ה-API הבאים:
המסוף
מפעילים את ממשקי ה-API של Managed Service for Apache Spark, Managed Airflow, BigQuery ו-Cloud Storage.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים
gcloud
מפעילים את ממשקי ה-API של Managed Service for Apache Spark, Managed Airflow, BigQuery ו-Cloud Storage:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים
gcloud services enable dataproc.googleapis.comcomposer.googleapis.com bigquery.googleapis.com storage.googleapis.com
מתן הרשאות
מקצים לחשבון המשתמש את התפקידים וההרשאות הבאים:
הקצאת תפקידים לניהול סביבות וקטגוריות של Managed Airflow.
נותנים את התפקיד BigQuery Data Owner (
roles/bigquery.dataOwner) כדי ליצור מערך נתונים ב-BigQuery.מקצים את התפקיד Storage Admin (
roles/storage.admin) ליצירת קטגוריה של Cloud Storage.
יצירה והכנה של סביבת Managed Airflow
יצירת סביבת Managed Airflow עם פרמטרים שמוגדרים כברירת מחדל:
- בוחרים אזור בארה"ב.
- בוחרים בגרסה העדכנית ביותר של Managed Airflow.
כדי שעובדי Airflow יוכלו להריץ בהצלחה משימות DAG, צריך להקצות לחשבון השירות שבו משתמשים בסביבת Airflow המנוהלת את התפקידים הבאים:
- BigQuery User (
roles/bigquery.user) - בעלים של נתונים ב-BigQuery (
roles/bigquery.dataOwner) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - Dataproc Editor (
roles/dataproc.editor) - Dataproc Worker (
roles/dataproc.worker)
- BigQuery User (
יצירה ושינוי של משאבים קשורים ב- Google Cloud
מתקינים את
apache-airflow-providers-amazonPyPI package בסביבת Managed Airflow.יוצרים מערך נתונים ריק ב-BigQuery עם הפרמטרים הבאים:
- Name (שם):
holiday_weather - אזור:
US
- Name (שם):
יוצרים קטגוריה חדשה של Cloud Storage
USבמספר אזורים.מריצים את הפקודה הבאה כדי להפעיל גישה פרטית ל-Google ברשת המשנה שמוגדרת כברירת מחדל באזור שבו רוצים להריץ את Managed Service for Apache Spark כדי לעמוד בדרישות הרשת. מומלץ להשתמש באותו אזור שבו נמצא סביבת Managed Airflow.
gcloud compute networks subnets update default \ --region DATAPROC_SERVERLESS_REGION \ --enable-private-ip-google-access
יצירת משאבים קשורים ב-AWS
יוצרים קטגוריית S3 עם הגדרות ברירת מחדל באזור המועדף.
התחברות ל-AWS מ-Managed Airflow
- איך מקבלים את מזהה מפתח הגישה ואת מפתח הגישה הסודי של AWS
מוסיפים את החיבור ל-AWS S3 באמצעות ממשק המשתמש של Airflow:
- עוברים אל ניהול > קישורים.
יוצרים חיבור חדש עם ההגדרות הבאות:
- מזהה החיבור:
aws_s3_connection - סוג החיבור:
Amazon S3 - נתונים נוספים (או JSON של שדות נוספים):
{"aws_access_key_id":"your_aws_access_key_id", "aws_secret_access_key": "your_aws_secret_access_key"}
- מזהה החיבור:
עיבוד נתונים באמצעות Managed Service for Apache Spark
בקטע הזה מתואר עיבוד נתונים באמצעות Managed Service for Apache Spark.
דוגמה לעבודת PySpark
הקוד שמוצג בהמשך הוא דוגמה לעבודת PySpark שממירה טמפרטורה ממעלות צלזיוס חלקי 10 למעלות צלזיוס. העבודה הזו ממירה נתוני טמפרטורה ממערך הנתונים לפורמט אחר.
העלאת קובץ PySpark ל-Cloud Storage
כדי להעלות את קובץ PySpark ל-Cloud Storage:
שומרים את data_analytics_process.py במחשב המקומי.
במסוף Google Cloud , עוברים לדף Cloud Storage browser:
לוחצים על שם הקטגוריה שיצרתם קודם.
בכרטיסייה Objects של הדלי, לוחצים על הלחצן Upload files, בוחרים את הקובץ
data_analytics_process.pyבתיבת הדו-שיח שמופיעה ולוחצים על Open.
העלאת קובץ ה-CSV ל-AWS S3
כדי להעלות את הקובץ holidays.csv:
- שומרים את
holidays.csvבמחשב המקומי. - פועלים לפי המדריך של AWS כדי להעלות את הקובץ ל-bucket.
DAG של ניתוח נתונים
בקטע הזה מוסבר איך להגדיר את ה-DAG של ניתוח הנתונים ואיך להשתמש בו.
עיון בדוגמה ל-DAG
ה-DAG משתמש בכמה אופרטורים כדי לשנות את הנתונים ולאחד אותם:
S3ToGCSOperatorמעביר את הקובץ holidays.csv מהקטגוריה של AWS S3 לקטגוריה של Cloud Storage.הפעולה
GCSToBigQueryOperatorמעכלת את הקובץ holidays.csv מ-Cloud Storage לטבלה חדשה במערך הנתוניםholidays_weatherשל BigQuery שיצרתם קודם.
DataprocCreateBatchOperatorיוצר ומריץ משימת PySpark באצווה באמצעות Managed Service for Apache Spark.הפונקציה
BigQueryInsertJobOperatorמצטרפת לנתונים מ-holidays.csv בעמודה Date עם נתוני מזג האוויר ממערך הנתונים הציבורי של BigQuery ghcn_d. המשימותBigQueryInsertJobOperatorנוצרות באופן דינמי באמצעות לולאת for, והמשימות האלה נמצאות ב-TaskGroupכדי לשפר את הקריאות בתצוגת הגרף של ממשק המשתמש של Airflow.
שימוש בממשק המשתמש של Airflow כדי להוסיף משתנים
ב-Airflow, משתנים הם דרך אוניברסלית לאחסון ולאחזור של הגדרות או תצורות שרירותיות כמאגר פשוט של זוגות מפתח/ערך. ב-DAG הזה נעשה שימוש במשתני Airflow כדי לאחסן ערכים נפוצים. כדי להוסיף אותם לסביבה:
גישה לממשק המשתמש של Airflow מתוך Google Cloud console.
עוברים אל ניהול > משתנים.
מוסיפים את המשתנים הבאים:
s3_bucket: השם של קטגוריית ה-S3 שיצרתם קודם.gcp_project: מזהה הפרויקט.
gcs_bucket: השם של הקטגוריה שיצרתם קודם (בלי הקידומתgs://).
gce_region: האזור שבו רוצים להריץ את העבודה של Managed Service for Apache Spark שעומדת בדרישות הרשת של Managed Service for Apache Spark. זהו האזור שבו הפעלתם גישה פרטית ל-Google קודם לכן.
dataproc_service_account: חשבון השירות של סביבת Managed Airflow. אפשר למצוא את חשבון השירות הזה בכרטיסייה Environment configuration בסביבת Managed Airflow.
העלאת ה-DAG לקטגוריה של הסביבה
Managed Airflow מתזמן DAG שנמצאים בתיקייה /dags בדלי של הסביבה. כדי להעלות את ה-DAG באמצעותGoogle Cloud המסוף:
במחשב המקומי, שומרים את הקובץ s3togcsoperator_tutorial.py.
במסוף Google Cloud , עוברים לדף Environments.
ברשימת הסביבות, בעמודה DAG folder (תיקיית DAG), לוחצים על הקישור DAGs. תיפתח תיקיית ה-DAG של הסביבה.
לוחצים על Upload files.
בוחרים באפשרות
s3togcsoperator_tutorial.pyבמחשב המקומי ולוחצים על פתיחה.
הפעלת ה-DAG
בסביבת Managed Airflow, לוחצים על הכרטיסייה DAGs.
לוחצים על מזהה ה-DAG
s3_to_gcs_dag.לוחצים על Trigger DAG (הפעלת DAG).
מחכים כחמש עד עשר דקות עד שרואים סימן וי ירוק שמציין שהמשימות הושלמו בהצלחה.
אימות ההצלחה של ה-DAG
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית Explorer, לוחצים על שם הפרויקט.
לחץ על
holidays_weather_joined.לוחצים על 'תצוגה מקדימה' כדי לראות את הטבלה שנוצרה. שימו לב שהמספרים בעמודת הערך הם עשיריות של מעלות צלזיוס.
לחץ על
holidays_weather_normalized.לוחצים על 'תצוגה מקדימה' כדי לראות את הטבלה שנוצרה. שימו לב שהמספרים בעמודת הערך הם במעלות צלזיוס.
הסרת המשאבים
מוחקים משאבים ספציפיים שיצרתם במדריך הזה:
מוחקים את הקובץ
holidays.csvבקטגוריה של AWS S3.מוחקים את קטגוריית ה-AWS S3 שיצרתם.
מוחקים את הקטגוריה של Cloud Storage שיצרתם לצורך המדריך הזה.
מחיקת סביבת Managed Airflow, כולל מחיקה ידנית של קטגוריית הסביבה.