פלט ויומנים של עבודות

כששולחים עבודה ל-Managed Service for Apache Spark, השירות אוסף באופן אוטומטי את הפלט של העבודה ומאפשר גישה אליו. המשמעות היא שאתם יכולים לבדוק במהירות את הפלט של העבודה בלי לשמור על חיבור לאשכול בזמן שהעבודות רצות או לעיין בקובצי יומן מורכבים.

יומני Spark

יש שני סוגים של יומני Spark: יומני Spark driver ויומני Spark executor. יומני מנהלי התקנים של Spark מכילים פלט של משימות. יומני executor של Spark מכילים פלט של קובץ הפעלה של משימה או של launcher, כמו ההודעה spark-submit "Submitted application ... ", ויכולים לעזור בניפוי באגים של כשלים במשימות.

ה-job driver של Managed Service for Apache Spark, ששונה מה-driver של Spark, הוא כלי להפעלת סוגים רבים של משימות. כשמפעילים משימות Spark, הן פועלות כעטיפה (wrapper) על קובץ ההפעלה spark-submit הבסיסי, שמפעיל את מנהל ההתקן של Spark. הדרייבר של Spark מריץ את המשימה באשכול Managed Service for Apache Spark במצב Spark client או cluster:

  • מצב client: מנהל ההתקן של Spark מריץ את המשימה בתהליך spark-submit, ויומני Spark נשלחים למנהל ההתקן של המשימה ב-Managed Service for Apache Spark.

  • מצב cluster: מנהל ההתקנים של Spark מפעיל את העבודה בקונטיינר YARN. יומני הרישום של מנהל ההתקן של Spark לא זמינים למנהל ההתקן של משימת Managed Service for Apache Spark.

סקירה כללית של Managed Service for Apache Spark ומאפייני משימות Spark

מאפיין (property) ערך ברירת מחדל תיאור
dataproc:dataproc.logging.stackdriver.job.driver.enable true or false FALSE צריך להגדיר את הערך הזה בזמן יצירת האשכול. כש-true, הפלט של מנהל התעבורה של העבודה נמצא ב-Logging, שמשויך למשאב העבודה. כש-false, הפלט של מנהל התעבורה של העבודה לא נמצא ב-Logging.
הערה: כדי להפעיל יומנים של מנהל העבודות ב-Logging, צריך להגדיר גם את ההגדרות הבאות של מאפייני האשכול, שמוגדרות כברירת מחדל כשיוצרים אשכול: dataproc:dataproc.logging.stackdriver.enable=true ו-dataproc:jobs.file-backed-output.enable=true
dataproc:dataproc.logging.stackdriver.job.yarn.container.enable true or false FALSE צריך להגדיר את הערך הזה בזמן יצירת האשכול. אם הערך הוא true, יומני המכולות של YARN של המשימה משויכים למשאב המשימה. אם הערך הוא false, יומני המכולות של YARN של המשימה משויכים למשאב האשכול.
spark:spark.submit.deployMode לקוח או אשכול לקוח שליטה במצב של Spark client או cluster.

משימות Spark שנשלחו באמצעות jobs API של Managed Service for Apache Spark

בטבלאות שבקטע הזה מפורטות ההשפעות של הגדרות שונות של מאפיינים על היעד של פלט מנהל המשימות של משימות Managed Service for Apache Spark, כשמגישים משימות דרך jobs API של Managed Service for Apache Spark, כולל הגשת משימות דרךGoogle Cloud המסוף, ה-CLI של gcloud וספריות לקוח בענן.

אפשר להגדיר את המאפיינים של Managed Service for Apache Spark ו-Spark שמפורטים כאן באמצעות הדגל --properties כשיוצרים אשכול, והם יחולו על כל משימות Spark שמופעלות באשכול. אפשר גם להגדיר את מאפייני Spark באמצעות הדגל --properties (בלי הקידומת spark:) כששולחים משימה ל-API של Managed Service for Apache Spark jobs, והם יחולו רק על המשימה.

פלט של מנהל משימות של Managed Service for Apache Spark

בטבלאות הבאות מפורטות ההשפעות של הגדרות שונות של נכסים על היעד של פלט מנהל המשימות של Managed Service for Apache Spark.

dataproc:
dataproc.logging.stackdriver.job.driver.enable
תשובה
‫false (ברירת מחדל)
  • הנתונים מוזרמים ללקוח
  • ב-Cloud Storage, בתיקייה שנוצרה על ידי Managed Service for Apache Spark driverOutputResourceUri
  • לא ביומן
TRUE
  • הנתונים מוזרמים ללקוח
  • ב-Cloud Storage, בתיקייה שנוצרה על ידי Managed Service for Apache Spark driverOutputResourceUri
  • בקטע 'רישום ביומן': dataproc.job.driver מתחת למשאב של המשרה.

יומנים של מנהל התקן Spark

בטבלאות הבאות מפורטות ההשפעות של הגדרות שונות של נכסים על היעד של יומני מנהל ההתקן של Spark.

spark:
spark.submit.deployMode
dataproc:
dataproc.logging.stackdriver.job.driver.enable
dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
פלט של הדרייבר
לקוח ‫false (ברירת מחדל) true or false
  • הנתונים מוזרמים ללקוח
  • ב-Cloud Storage, בתיקייה שנוצרה על ידי Managed Service for Apache Spark driverOutputResourceUri
  • לא ביומן
לקוח TRUE true or false
  • הנתונים מוזרמים ללקוח
  • ב-Cloud Storage, בתיקייה שנוצרה על ידי Managed Service for Apache Spark driverOutputResourceUri
  • בקטע 'רישום ביומן': dataproc.job.driver מתחת למשאב של המשרה
אשכול ‫false (ברירת מחדל) FALSE
  • לא מועבר בסטרימינג ללקוח
  • לא ב-Cloud Storage
  • ב-Logging yarn-userlogs מתחת למשאב האשכול
אשכול TRUE TRUE
  • לא מועבר בסטרימינג ללקוח
  • לא ב-Cloud Storage
  • בקטע 'רישום ביומן': dataproc.job.yarn.container מתחת למשאב של המשרה

יומנים של Spark executor

בטבלאות הבאות מפורטת ההשפעה של הגדרות שונות של נכסים על היעד של יומני Spark executor.

dataproc:
dataproc.logging.stackdriver.job.yarn.container.enable
יומן של מוציא לפועל
‫false (ברירת מחדל) בקטע Logging: yarn-userlogs מתחת למשאב האשכול
TRUE בקטע Logging dataproc.job.yarn.container מתחת למשאב של המשימה

משימות Spark שנשלחו בלי להשתמש ב-API של Managed Service for Apache Spark jobs

בקטע הזה מפורטות ההשפעות של הגדרות שונות של מאפיינים על היעד של יומני משימות Spark כששולחים משימות בלי להשתמש ב-API של Managed Service for Apache Spark‏ jobs, למשל כששולחים משימה ישירות בצומת של אשכול באמצעות spark-submit או כשמשתמשים ב-notebook של Jupyter או Zeppelin. למשימות האלה אין מזהי משימות או דרייברים של Managed Service for Apache Spark.

יומנים של מנהל התקן Spark

בטבלאות הבאות מפורטות ההשפעות של הגדרות שונות של מאפיינים על יעד היומנים של מנהל ההתקן של Spark למשימות שלא נשלחו דרך jobs API של Managed Service for Apache Spark.

spark:
spark.submit.deployMode
פלט של הדרייבר
לקוח
  • הנתונים מוזרמים ללקוח
  • לא ב-Cloud Storage
  • לא ביומן
אשכול
  • לא מועבר בסטרימינג ללקוח
  • לא ב-Cloud Storage
  • ב-Logging yarn-userlogs מתחת למשאב האשכול

יומנים של Spark executor

כשמשימות Spark לא נשלחות דרך Managed Service for Apache Spark jobs API, יומני הביצוע נמצאים ב-Logging yarn-userlogs מתחת למשאב האשכול.

הצגת פלט של משימה

אפשר לגשת לפלט של משימות ב-Managed Service for Apache Spark במסוף Google Cloud , ב-CLI של gcloud, ב-Cloud Storage או ב-Logging.

המסוף

כדי לראות את הפלט של העבודה, עוברים לקטע Managed Service for Apache Spark (שירות מנוהל ל-Apache Spark) של הפרויקט Jobs (עבודות) ולוחצים על מזהה משימה (מזהה עבודה) כדי לראות את הפלט של העבודה.

אם המשימה פועלת, הפלט של המשימה מתעדכן מעת לעת עם תוכן חדש.

פקודת gcloud

כששולחים משימה באמצעות הפקודה gcloud dataproc jobs submit, הפלט של המשימה מוצג במסוף. אפשר להצטרף מחדש לפלט מאוחר יותר, במחשב אחר או בחלון חדש, על ידי העברת מזהה העבודה לפקודה gcloud dataproc jobs wait. מזהה המשימה הוא GUID, למשל 5c1754a5-34f7-4553-b667-8a1199cb9cab. נראה דוגמה.

gcloud dataproc jobs wait 5c1754a5-34f7-4553-b667-8a1199cb9cab \
    --project my-project-id --region my-cluster-region
Waiting for job output...
... INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.4.2-hadoop2
... 16:47:45 INFO client.RMProxy: Connecting to ResourceManager at my-test-cluster-m/
...

Cloud Storage

הפלט של העבודה מאוחסן ב-Cloud Storage בקטגוריית הביניים או בקטגוריה שציינתם כשנוצר האשכול. קישור לפלט של המשימה ב-Cloud Storage מופיע בשדה Job.driverOutputResourceUri שמוחזר על ידי:

  • בקשת API מסוג jobs.get.
  • פקודה gcloud dataproc jobs describe job-id.
    $ gcloud dataproc jobs describe spark-pi
    ...
    driverOutputResourceUri: gs://dataproc-nnn/jobs/spark-pi/driveroutput
    ...
    

רישום ביומן

במאמר יומנים של Managed Service for Apache Spark מוסבר איך לצפות בפלט של עבודות ב-Managed Service for Apache Spark ב-Logging.