כדי לזהות עומסי עבודה של אצווה שיכולים להשיג זמני ריצה מהירים יותר באמצעות Native Query Execution (NQE), אפשר להשתמש בכלי ההסמכה. הכלי מנתח את יומני האירועים של Spark כדי להעריך את החיסכון הפוטנציאלי בזמן הריצה ולזהות פעולות שלא נתמכות על ידי מנוע NQE.
Google Cloud מספקת שתי שיטות להפעלת ניתוח הזכאות: משימת זכאות ותסריט זכאות. הגישה המומלצת לרוב המשתמשים היא משימת ההסמכה, שמבצעת אוטומציה של הגילוי והניתוח של עומסי עבודה (workloads) של אצווה. סקריפט ההסמכה החלופי זמין לתרחיש הספציפי של ניתוח קובץ יומן אירועים ידוע. בוחרים את השיטה שהכי מתאימה לתרחיש השימוש שלכם:
משימת הסמכה (מומלץ): זו השיטה העיקרית והמומלצת. זוהי משימת PySpark שמגלה ומנתחת באופן אוטומטי עומסי עבודה של אצווה אחרונה בפרויקט אחד או יותר ובאזורים שונים. Google Cloud משתמשים בשיטה הזו כשרוצים לבצע ניתוח רחב בלי צורך לאתר באופן ידני קובצי יומן אירועים ספציפיים. הגישה הזו מתאימה במיוחד להערכה בקנה מידה גדול של מידת ההתאמה של NQE.
סקריפט של קריטריונים (חלופה): זו שיטה חלופית לתרחישי שימוש מתקדמים או ספציפיים. זהו סקריפט של מעטפת שמנתח קובץ יומן אירועים יחיד של Spark או את כל יומני האירועים בספרייה מסוימת ב-Cloud Storage. משתמשים בשיטה הזו אם יש לכם את הנתיב ב-Cloud Storage ליומני האירועים שאתם רוצים לנתח.
משימת מוקדמות
משימת ההסמכה מפשטת את הניתוח בהיקפים גדולים על ידי סריקה תוכנתית של עומסי עבודה באצווה של Managed Service for Apache Spark ושליחה של משימת ניתוח מבוזרת. הכלי מעריך את המשימות בכל הארגון, וכך מייתר את הצורך למצוא ולציין באופן ידני את הנתיבים של יומני האירועים.
מתן תפקידים ב-IAM
כדי שמשימת ההסמכה תוכל לגשת למטא-נתונים של עומס העבודה של Batch ולקרוא יומני אירועים של Spark ב-Cloud Logging, לחשבון השירות שמריץ את עומס העבודה צריכות להיות מוקצות הרשאות לתפקידי ה-IAM הבאים בכל הפרויקטים שינותחו:
- צפייה ב-Managed Service for Apache Spark (roles/dataproc.viewer)
- הכלי לצפייה ביומנים (roles/logging.viewer)
שליחת משימת ההסמכה
שולחים את משימת ההסמכה באמצעות כלי ה-CLI של gcloud. העבודה כוללת סקריפט PySpark וקובץ JAR שמתארחים בקטגוריה של Cloud Storage ציבורית.
אפשר להריץ את העבודה באחת מסביבות ההפעלה הבאות:
בתור עומס עבודה באצווה של Managed Service for Apache Spark. זוהי הפעלה פשוטה ועצמאית של משימה.
כמשימה שמופעלת באשכול Managed Service for Apache Spark. הגישה הזו יכולה להיות שימושית לשילוב העבודה בתהליך עבודה.
ארגומנטים של משרות
| ארגומנט | תיאור | חובה? | ערך ברירת המחדל |
|---|---|---|---|
--project-ids |
מזהה פרויקט יחיד או רשימה של מזהי פרויקטים ב-Google Cloud שמופרדים בפסיקים, לסריקה של עומסי עבודה של אצווה. | לא | הפרויקט שבו פועלת משימת ההסמכה. |
--regions |
אזור יחיד או רשימה של אזורים מופרדים בפסיקים לסריקה בפרויקטים שצוינו. | לא | כל האזורים בפרויקטים שצוינו. |
--start-time |
תאריך ההתחלה לסינון קבוצות. רק קבוצות של פריטים שנוצרו בתאריך הזה או אחריו (בפורמט YYYY-MM-DD) ינותחו. | לא | לא מוחל מסנן של תאריך התחלה. |
--end-time |
תאריך הסיום לסינון קבוצות. רק קבוצות שנוצרו בתאריך הזה או לפניו (בפורמט: YYYY-MM-DD) ינותחו. | לא | לא מוחל מסנן של תאריך סיום. |
--limit |
המספר המקסימלי של אצוות לניתוח בכל אזור. המערכת מנתחת קודם את הקבוצות האחרונות. | לא | המערכת מנתחת את כל האצוות שתואמות לקריטריוני הסינון האחרים. |
--output-gcs-path |
הנתיב ב-Cloud Storage (לדוגמה, gs://your-bucket/output/) שבו ייכתבו קובצי התוצאות. |
כן | אין. |
--input-file |
הנתיב ב-Cloud Storage לקובץ טקסט לניתוח בכמות גדולה. אם מציינים את הארגומנט הזה, הוא מבטל את כל הארגומנטים האחרים שמגדירים את היקף החיפוש (--project-ids, --regions, --start-time, --end-time, --limit). |
לא | אין. |
דוגמאות למשרות שנדרשת בהן הסמכה
משימה באצווה של Managed Service for Apache Spark לביצוע ניתוח פשוט ואד-הוק. הארגומנטים של המשימה מפורטים אחרי המפריד
--.gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --project=PROJECT_ID \ --region=REGION \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --project-ids=COMMA_SEPARATED_PROJECT_IDS \ --regions=COMMA_SEPARATED_REGIONS \ --limit=MAX_BATCHES \ --output-gcs-path=gs://BUCKET
משימה באצווה של Managed Service for Apache Spark לניתוח של עד 50 קבוצות הנתונים האחרונות שנמצאו ב-
sample_projectבאזורus-central1. התוצאות נכתבות לקטגוריה ב-Cloud Storage. הארגומנטים של המשימה מפורטים אחרי המפריד--.gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --project=PROJECT_ID \ --region=US-CENTRAL1 \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --project-ids=PROJECT_ID \ --regions=US-CENTRAL1 \ --limit=50 \ --output-gcs-path=gs://BUCKET/
משימה של Managed Service for Apache Spark שנשלחת לאשכול של Managed Service for Apache Spark לניתוח בכמות גדולה בתהליך עבודה של ניתוח בהיקף גדול, חוזר או אוטומטי. ארגומנטים של משימות ממוקמים ב-INPUT_FILE שמועלה ל-BUCKET ב-Cloud Storage. השיטה הזו מתאימה לסריקה של טווחי תאריכים שונים או מגבלות על אצוות בפרויקטים ובאזורים שונים בהרצה אחת.
gcloud dataproc jobs submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --cluster=CLUSTER_NAME \ --region=REGION \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --input-file=gs://INPUT_FILE \ --output-gcs-path=gs://BUCKET
הערות:
INPUT_FILE: כל שורה בקובץ מייצגת בקשה נפרדת לניתוח, והפורמט הוא דגלים של אות אחת ואחריהם הערכים שלהם, לדוגמה:
-p PROJECT-ID -r REGION -s START_DATE -e END_DATE -l LIMITS.תוכן קובץ קלט לדוגמה:
-p project1 -r us-central1 -s 2024-12-01 -e 2024-12-15 -l 100 -p project2 -r europe-west1 -s 2024-11-15 -l 50
הארגומנטים האלה מכוונים את הכלי לנתח את שני ההיקפים הבאים:
- עד 100 קבוצות של משימות בפרויקט project1 באזור
us-central1שנוצרו בין 1 בדצמבר 2025 ל-15 בדצמבר 2025. - עד 50 קבוצות בפרויקט project2 באזור
europe-west1שנוצרו ב-15 בנובמבר 2025 או אחרי תאריך זה.
- עד 100 קבוצות של משימות בפרויקט project1 באזור
סקריפט של מוקדמות
כדאי להשתמש בשיטה הזו אם יש לכם נתיב ישיר ב-Cloud Storage ליומן אירועים ספציפי של Spark שאתם רוצים לנתח. בגישה הזו צריך להוריד ולהריץ סקריפט מעטפת, run_qualification_tool.sh, במחשב מקומי או במכונה וירטואלית של Compute Engine שמוגדרת עם גישה לקובץ יומן האירועים ב-Cloud Storage.
כדי להריץ את הסקריפט על קבצי אירועים של עומסי עבודה ברצף (batch) ב-Managed Service for Apache Spark, מבצעים את השלבים הבאים.
1.מעתיקים את
run_qualification_tool.sh
לספרייה מקומית שמכילה את קובצי האירועים של Spark לניתוח.
מריצים את סקריפט ההסמכה כדי לנתח קובץ אירועים אחד או קבוצה של קובצי אירועים שנמצאים בספריית הסקריפט.
./run_qualification_tool.sh -f EVENT_FILE_PATH/EVENT_FILE_NAME \ -o CUSTOM_OUTPUT_DIRECTORY_PATH \ -k SERVICE_ACCOUNT_KEY \ -x MEMORY_ALLOCATEDg \ -t PARALLEL_THREADS_TO_RUN
דגלים וערכים:
-f(חובה): כדי לאתר קבצים של אירועי עומסי עבודה של Spark, אפשר לעיין במאמר בנושא מיקומי קבצים של אירועי Spark.EVENT_FILE_PATH (חובה אלא אם מציינים את EVENT_FILE_NAME): הנתיב של קובץ האירועים לניתוח. אם לא מציינים נתיב, המערכת מניחה שנתיב הקובץ של האירוע הוא הספרייה הנוכחית.
EVENT_FILE_NAME (חובה, אלא אם מצוין EVENT_FILE_PATH): שם קובץ האירועים לניתוח. אם לא מספקים קבצים, הכלי מנתח את קובצי האירועים שנמצאים באופן רקורסיבי ב-
EVENT_FILE_PATH.
-o(אופציונלי): אם לא מציינים נתיב, הכלי יוצר או משתמש בספרייה קיימתoutputבספרייה הנוכחית כדי למקם את קובצי הפלט.- CUSTOM_OUTPUT_DIRECTORY_PATH: נתיב ספריית הפלט לקובצי הפלט.
-k(אופציונלי):- SERVICE_ACCOUNT_KEY: המפתח של חשבון השירות בפורמט JSON אם צריך אותו כדי לגשת אל EVENT_FILE_PATH.
-x(אופציונלי):- MEMORY_ALLOCATED: הזיכרון בג'יגה-בייט שיוקצה לכלי. כברירת מחדל, הכלי משתמש ב-80% מהזיכרון הפנוי שזמין במערכת ובכל ליבות המכונה הזמינות.
-t(אופציונלי):- PARALLEL_THREADS_TO_RUN: מספר השרשורים המקבילים שהכלי יבצע. כברירת מחדל, הכלי מפעיל את כל ליבות המעבד.
דוגמה לשימוש בפקודה:
./run_qualification_tool.sh -f gs://dataproc-temp-us-east1-9779/spark-job-history \ -o perfboost-output -k /keys/event-file-key -x 34g -t 5
בדוגמה הזו, כלי ההסמכה עובר על הספרייה
gs://dataproc-temp-us-east1-9779/spark-job-historyומנתח את קובצי האירועים של Spark שנמצאים בספרייה הזו ובספריות המשנה שלה. הגישה לספרייה ניתנת ל-/keys/event-file-key. הכלי משתמש ב-34 GB memoryלביצוע, ומריץ5שרשורים מקבילים.
מיקומי קבצים של אירועים ב-Spark
כדי למצוא את קובצי האירועים של Spark עבור עומסי עבודה של עיבוד ברצף (batch processing) ב-Managed Service for Apache Spark, מבצעים את אחת מהפעולות הבאות:
ב-Cloud Storage, מחפשים את
spark.eventLog.dirשל עומס העבודה ומורידים אותו.- אם לא מוצאים את
spark.eventLog.dir, מגדירים אתspark.eventLog.dirלמיקום ב-Cloud Storage, מריצים מחדש את עומס העבודה ומורידים אתspark.eventLog.dir.
- אם לא מוצאים את
אם הגדרתם את Spark History Server למשימת אצווה:
- עוברים ל-Spark History Server ובוחרים את עומס העבודה.
- לוחצים על הורדה בעמודה יומן האירועים.
קובצי פלט של כלי ההסמכה
אחרי שהכלי לזיהוי בעיות מסיים את העבודה או את ניתוח הסקריפט, הוא מציב את קובצי הפלט הבאים בספרייה perfboost-output בספרייה הנוכחית:
AppsRecommendedForBoost.tsv: רשימה של אפליקציות שמומלצות לשימוש עם הפעלת שאילתות מקוריות, מופרדות באמצעות Tab.
UnsupportedOperators.tsv: רשימה של אפליקציות שמופרדות באמצעות טאבים, שלא מומלץ להשתמש בהן עם Native Query Execution.
קובץ פלט אחד (AppsRecommendedForBoost.tsv)
בטבלה הבאה מוצג התוכן של קובץ פלט לדוגמה AppsRecommendedForBoost.tsv. הוא מכיל שורה לכל אפליקציה שנבדקה.
קובץ פלט AppsRecommendedForBoost.tsv לדוגמה:
| applicationId | applicationName | rddPercentage | unsupportedSqlPercentage | totalTaskTime | supportedTaskTime | supportedSqlPercentage | recommendedForBoost | expectedRuntimeReduction |
|---|---|---|---|---|---|---|---|---|
| app-2024081/batches/083f6196248043938-000 | projects/example.com:dev/locations/us-central1 6b4d6cae140f883c0 11c8e |
0.00% | 0.00% | 548924253 | 548924253 | 100.00% | TRUE | 30.00% |
| app-2024081/batches/60381cab738021457-000 | projects/example.com:dev/locations/us-central1 474113a1462b426bf b3aeb |
0.00% | 0.00% | 514401703 | 514401703 | 100.00% | TRUE | 30.00% |
תיאורי העמודות:
applicationId: ה-ApplicationIDשל אפליקציית Spark. הפרמטר הזה משמש לזיהוי עומס העבודה המתאים של אצווה.
applicationName: השם של אפליקציית Spark.
rddPercentage: אחוז הפעולות של RDD באפליקציה. אין תמיכה בפעולות RDD בביצוע שאילתות מקוריות.unsupportedSqlPercentage:אחוז פעולות ה-SQL שלא נתמכות על ידי Native Query Execution.
totalTaskTime: הזמן המצטבר של כל המשימות שהופעלו במהלך הרצת האפליקציה.
supportedTaskTime: משך הזמן הכולל של המשימה שנתמך על ידי ביצוע שאילתות מקומי.
העמודות הבאות מספקות מידע חשוב שיעזור לכם לקבוע אם הפעלת שאילתות מקוריות יכולה להועיל לעומס העבודה של אצווה:
supportedSqlPercentage: אחוז פעולות ה-SQL שנתמכות על ידי ביצוע שאילתות מקורי. ככל שהאחוז גבוה יותר, כך אפשר לקצר יותר את זמן הריצה על ידי הפעלת האפליקציה עם Native Query Execution.
recommendedForBoost: אםTRUE, מומלץ להריץ את האפליקציה עם Native Query Execution. אםrecommendedForBoostהואFALSE, אל תשתמשו בביצוע שאילתות מקוריות בעומס העבודה של האצווה.
expectedRuntimeReduction: אחוז ההפחתה הצפוי בזמן הריצה של האפליקציה כשמריצים את האפליקציה עם Native Query Execution.
קובץ הפלט UnsupportedOperators.tsv.
קובץ הפלט UnsupportedOperators.tsv מכיל רשימה של אופרטורים שנעשה בהם שימוש באפליקציות של עומסי עבודה שלא נתמכים על ידי Native Query Execution.
כל שורה בקובץ הפלט מפרטת אופרטור שלא נתמך.
תיאורי העמודות:
unsupportedOperator: שם האופרטור שלא נתמך על ידי Native Query Execution.
cumulativeCpuMs: מספר אלפיות השנייה של זמן המעבד שנצרכו במהלך ההפעלה של האופרטור. הערך הזה משקף את החשיבות היחסית של האופרטור באפליקציה.count: מספר הפעמים שהאופרטור נמצא בשימוש באפליקציה.