הפעלת הכלי לבדיקת כשירות להרצת שאילתות מקוריות

כדי לזהות עומסי עבודה של אצווה שיכולים להשיג זמני ריצה מהירים יותר באמצעות 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 הבאים בכל הפרויקטים שינותחו:

שליחת משימת ההסמכה

שולחים את משימת ההסמכה באמצעות כלי ה-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 או אחרי תאריך זה.

סקריפט של מוקדמות

כדאי להשתמש בשיטה הזו אם יש לכם נתיב ישיר ב-Cloud Storage ליומן אירועים ספציפי של Spark שאתם רוצים לנתח. בגישה הזו צריך להוריד ולהריץ סקריפט מעטפת, run_qualification_tool.sh, במחשב מקומי או במכונה וירטואלית של Compute Engine שמוגדרת עם גישה לקובץ יומן האירועים ב-Cloud Storage.

כדי להריץ את הסקריפט על קבצי אירועים של עומסי עבודה ברצף (batch) ב-Managed Service for Apache Spark, מבצעים את השלבים הבאים.

‫1.מעתיקים את run_qualification_tool.sh לספרייה מקומית שמכילה את קובצי האירועים של Spark לניתוח.

  1. מריצים את סקריפט ההסמכה כדי לנתח קובץ אירועים אחד או קבוצה של קובצי אירועים שנמצאים בספריית הסקריפט.

    ./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 (אופציונלי):

    -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, מבצעים את אחת מהפעולות הבאות:

  1. ב-Cloud Storage, מחפשים את spark.eventLog.dir של עומס העבודה ומורידים אותו.

    1. אם לא מוצאים את spark.eventLog.dir, מגדירים את spark.eventLog.dir למיקום ב-Cloud Storage, מריצים מחדש את עומס העבודה ומורידים את spark.eventLog.dir.
  2. אם הגדרתם את Spark History Server למשימת אצווה:

    1. עוברים ל-Spark History Server ובוחרים את עומס העבודה.
    2. לוחצים על הורדה בעמודה יומן האירועים.

קובצי פלט של כלי ההסמכה

אחרי שהכלי לזיהוי בעיות מסיים את העבודה או את ניתוח הסקריפט, הוא מציב את קובצי הפלט הבאים בספרייה 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: מספר הפעמים שהאופרטור נמצא בשימוש באפליקציה.