יומנים של Managed Service for Apache Spark

אפשר להציג, לחפש, לסנן ולארכב יומנים של משימות ואשכולות של Managed Service for Apache Spark ב-Cloud Logging.

רמות רישום ביומן של רכיבים

אתם יכולים להגדיר את רמות הרישום ביומן של Spark,‏ Hadoop,‏ Flink ורכיבים אחרים של Managed Service for Apache Spark באמצעות מאפייני אשכול ספציפיים לרכיב log4j, כמו hadoop-log4j, כשאתם יוצרים אשכול. רמות הרישום ביומן של רכיבים מבוססי-אשכול חלות על שדי שירות, כמו YARN ResourceManager, ועל משימות שפועלות באשכול.

אם מאפייני log4j לא נתמכים ברכיב מסוים, כמו רכיב Presto, צריך לכתוב פעולת אתחול שמשנה את הקובץ log4j.properties או log4j2.properties של הרכיב.

רמות רישום ביומן של רכיבים ספציפיים לעבודה: אפשר גם להגדיר רמות רישום ביומן של רכיבים כששולחים עבודה. רמות הרישום ביומן חלות על העבודה, ויש להן עדיפות על פני רמות הרישום ביומן שהוגדרו כשנוצר האשכול. מידע נוסף זמין במאמר בנושא מאפייני אשכול לעומת מאפייני משימה.

רמות הרישום ביומן של רכיבי Spark ו-Hive:

הרכיבים Spark 3.3.X ו-Hive 3.X משתמשים במאפייני log4j2, בעוד שגרסאות קודמות של הרכיבים האלה משתמשות במאפייני log4j (ראו Apache Log4j2). כדי להגדיר את רמות הרישום ביומן של Spark באשכול, צריך להשתמש בקידומת spark-log4j:.

רמות רישום ביומן של מנהל העבודות

‫Managed Service for Apache Spark משתמש ברמת ברירת מחדל של רישום ביומן של INFO לתוכניות של מנהלי משימות. אפשר לשנות את ההגדרה הזו לחבילה אחת או יותר באמצעות הדגל --driver-log-levels של gcloud dataproc jobs submit.

דוגמה:

מגדירים את רמת הרישום ביומן DEBUG כששולחים משימת Spark שקוראת קבצים ב-Cloud Storage.

gcloud dataproc jobs submit spark ...\
    --driver-log-levels org.apache.spark=DEBUG,com.google.cloud.hadoop.gcsio=DEBUG

דוגמה:

מגדירים את רמת היומן root לערך WARN, ואת רמת היומן com.example לערך INFO.

gcloud dataproc jobs submit hadoop ...\
    --driver-log-levels root=WARN,com.example=INFO

רמות רישום ביומן של Spark executor

כדי להגדיר את רמות הרישום ביומן של Spark executor:

  1. הכנת קובץ הגדרות של log4j והעלאה שלו ל-Cloud Storage

    ומתאימים אותו אישית.

  2. כששולחים את העבודה, מציינים את קובץ ההגדרות.

    דוגמה:

    gcloud dataproc jobs submit spark ...\
        --file gs://my-bucket/path/spark-log4j.properties \
        --properties spark.executor.extraJavaOptions=-Dlog4j.configuration=file:spark-log4j.properties
    

‫Spark מוריד את קובץ המאפיינים של Cloud Storage לספריית העבודה המקומית של הג'וב, שמצוינת כ-file:<name> ב--Dlog4j.configuration.

יומני משימות של Managed Service for Apache Spark ב-Logging

מידע על הפעלת יומני מנהלי משימות של Managed Service for Apache Spark ב-Logging זמין במאמר Managed Service for Apache Spark job output and logs.

גישה ליומני משימות ב-Logging

אפשר לגשת ליומני העבודות של Managed Service for Apache Spark באמצעות Logs Explorer, הפקודה gcloud logging או Logging API.

המסוף

יומני ה-driver של משימות ויומני הקונטיינרים של YARN ב-Managed Service for Apache Spark מופיעים במשאב Cloud Managed Service for Apache Spark Job.

דוגמה: יומן של מנהל משימות אחרי הרצת שאילתה ב-Logs Explorer עם הבחירות הבאות:

  • משאב: Cloud Dataproc Job
  • שם היומן: dataproc.job.driver

דוגמה: יומן של קונטיינר YARN אחרי הרצת שאילתה ב-Logs Explorer עם הבחירות הבאות:

  • משאב: Cloud Dataproc Job
  • שם היומן: dataproc.job.yarn.container

gcloud

אפשר לקרוא את הרשומות ביומן של המשימה באמצעות הפקודה gcloud logging read. ארגומנטי המשאבים צריכים להיות מוקפים במירכאות ("..."). הפקודה הבאה משתמשת בתוויות של אשכולות כדי לסנן את רשומות היומן שמוחזרות.

gcloud logging read \
    "resource.type=cloud_dataproc_job \
    resource.labels.region=cluster-region \
    resource.labels.job_id=my-job-id"

פלט לדוגמה (חלקי):

jsonPayload:
  class: org.apache.hadoop.hdfs.StateChange
  filename: hadoop-hdfs-namenode-test-dataproc-resize-cluster-20190410-38an-m-0.log
  ,,,
logName: projects/project-id/logs/hadoop-hdfs-namenode
---
jsonPayload:
  class: SecurityLogger.org.apache.hadoop.security.authorize.ServiceAuthorizationManager
  filename: cluster-name-dataproc-resize-cluster-20190410-38an-m-0.log
  ...
logName: projects/google.com:hadoop-cloud-dev/logs/hadoop-hdfs-namenode

‫API בארכיטקטורת REST

אפשר להשתמש ב-Logging API בארכיטקטורת REST כדי להציג רשימה של רשומות ביומן (ראו entries.list).

יומני אשכולות של Managed Service for Apache Spark ב-Logging

שירות מנוהל ל-Apache Spark מייצא את יומני האשכול הבאים של Apache Hadoop,‏ Spark,‏ Hive,‏ Zookeeper ויומנים אחרים של שירות מנוהל ל-Apache Spark אל Cloud Logging.

סוג היומן שם היומן תיאור הערות
יומני דמון ראשיים hadoop-hdfs
hadoop-hdfs-namenode
hadoop-hdfs-secondarynamenode
hadoop-hdfs-zkfc
hadoop-yarn-resourcemanager
hadoop-yarn-timelineserver
hive-metastore
hive-server2
hadoop-mapred-historyserver
zookeeper
‫Journal node
HDFS namenode
HDFS secondary namenode
Zookeeper failover controller
YARN resource manager
YARN timeline server
Hive metastore
Hive server2
Mapreduce job history server
Zookeeper server
יומנים של דמון העובד hadoop-hdfs-datanode
hadoop-yarn-nodemanager
HDFS datanode
YARN nodemanager
יומני מערכת autoscaler
google.dataproc.agent
google.dataproc.startup
יומן של Managed Service for Apache Spark autoscaler
יומן של Managed Service for Apache Spark agent
יומן של סקריפט לטעינה בזמן ההפעלה של Managed Service for Apache Spark + יומן של פעולת האתחול
יומנים מורחבים (נוספים) knox
gateway-audit
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
כל היומנים בספריות המשנה /var/log/ שתואמות ל:
knox (כולל gateway-audit.log)
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
הגדרת המאפיין dataproc:dataproc.logging.extended.enabled=false משביתה את איסוף היומנים המורחבים באשכול
יומני מערכת של מכונות וירטואליות syslog
יומני מערכת מצמתים ראשיים וצמתים של עובדים באשכול
הגדרת הנכס dataproc:dataproc.logging.syslog.enabled=false משביתה את איסוף יומני המערכת של המכונה הווירטואלית באשכול

גישה ליומני אשכול ב-Cloud Logging

אפשר לגשת ליומנים של אשכול Managed Service for Apache Spark באמצעות Logs Explorer, הפקודה gcloud logging או Logging API.

המסוף

כדי להציג את יומני האשכול ב-Logs Explorer, בוחרים את השאילתות הבאות:

  • משאב: Cloud Dataproc Cluster
  • שם היומן: log name

gcloud

אפשר לקרוא את הרשומות ביומן של האשכול באמצעות הפקודה gcloud logging read. ארגומנטי המשאבים צריכים להיות מוקפים במירכאות ("..."). הפקודה הבאה משתמשת בתוויות של אשכולות כדי לסנן את רשומות היומן שמוחזרות.

gcloud logging read <<'EOF'
    "resource.type=cloud_dataproc_cluster
    resource.labels.region=cluster-region
    resource.labels.cluster_name=cluster-name
    resource.labels.cluster_uuid=cluster-uuid"
EOF

פלט לדוגמה (חלקי):

jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-cluster-name-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager
---
jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-component-gateway-cluster-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager

‫API בארכיטקטורת REST

אפשר להשתמש ב-Logging API בארכיטקטורת REST כדי להציג רשימה של רשומות ביומן (ראו entries.list).

הרשאות

כדי לכתוב יומנים ל-Logging, לחשבון השירות של המכונה הווירטואלית של Managed Service for Apache Spark צריך להיות תפקיד IAM‏ logging.logWriter. חשבון השירות שמוגדר כברירת מחדל ב-Managed Service for Apache Spark כולל את התפקיד הזה. אם משתמשים בחשבון שירות בהתאמה אישית, צריך להקצות את התפקיד הזה לחשבון השירות.

הגנה על היומנים

כברירת מחדל, היומנים ב-Logging מוצפנים כל עוד הם מאוחסנים בענן. אתם יכולים להפעיל מפתחות הצפנה בניהול הלקוח (CMEK) כדי להצפין את היומנים. מידע נוסף על תמיכה ב-CMEK זמין במאמרים בנושא ניהול המפתחות שמגנים על נתונים ב-Log Router וניהול המפתחות שמגנים על נתונים באחסון של Logging.

המאמרים הבאים