שיפורים בביצועים של Managed Service for Apache Spark

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

השיפורים בביצועים של Managed Service for Apache Spark כוללים:

  • שיפורים ב-Spark Optimizer:
    • כללי אופטימיזציה שנכתבו כדי לשפר את תוכניות Spark
    • שיפור הביצועים של מחבר BigQuery של Managed Service for Apache Spark כשמשתמשים בו במשימות Spark
  • שיפורים בביצוע של Spark:
    • שיפורים במנוע ההפעלה של Spark

שיפורים נוספים בביצועים של Managed Service for Apache Spark: במאמר בנושא שמירת נתונים במטמון באשכול של Managed Service for Apache Spark מוסבר איך לקצר את הזמן שנדרש לגישה לנתונים ב-Cloud Storage.

אפשר להפעיל שיפורים בביצועים של Spark באשכול או במשימת Spark:

תמחור

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

לתשומת ליבכם

השיפורים בביצועים של Spark משנים את המאפיינים של Spark, כולל המאפיינים הבאים:

  • spark.sql.shuffle.partitions: שיפורים בביצועים של Spark מגדירים את המאפיין הזה ל-1000 עבור אשכולות של גרסת תמונה 2.2. ההגדרה הזו עלולה להאט עבודות קטנות.
  • spark.dataproc.sql.catalog.file.index.stats.enabled: ההגדרה הזו עלולה לגרום לתנאי OOM (Out-Of-Memory) במנהל ההתקן אם מספר המחיצות ב-Hive גבוה. השבתה של הנכס הזה יכולה לפתור את מצב ה-OOM.

הפעלת שיפורים בזמן יצירת אשכול

אפשר להשתמש במסוף, ב-Google Cloud CLI וב-Dataproc API כדי להפעיל שיפורים בביצועים של Managed Service for Apache Spark כשיוצרים אשכול Managed Service for Apache Spark עם גרסאות תמונה 2.0.69+,‏ 2.1.17+,‏ 2.2.0+ וגרסאות תמונה מאוחרות יותר. Google Cloud

המסוף

  1. במסוף Google Cloud , פותחים את הדף Create cluster.
  2. לוחצים על הגדרה נוספת כדי להרחיב את הקטע.
  3. עורכים את התאמה אישית ואחר.
  4. בקטע מאפייני האשכול, מוסיפים את המאפיינים הבאים:
    • כדי להפעיל שיפורים באופטימיזציה של Spark:
      1. לוחצים על + הוספת מאפיינים.
      2. ברשימה Prefix בוחרים באפשרות spark.
      3. מזינים spark.dataproc.enhanced.optimizer.enabled בשדה מפתח ו-true בשדה ערך.
    • כדי להפעיל שיפורים בביצוע של Spark:
      1. לוחצים על + הוספת מאפיינים.
      2. ברשימה Prefix בוחרים באפשרות spark.
      3. מזינים spark.dataproc.enhanced.execution.enabled בשדה מפתח ו-true בשדה ערך.
  5. ממלאים את שאר השדות של האשכול ולוחצים על יצירת אשכול.

gcloud

  1. מריצים את הפקודה הבאה gcloud dataproc clusters create באופן מקומי בחלון מסוף או ב-Cloud Shell.

    gcloud dataproc clusters create CLUSTER_NAME \
        --project=PROJECT_ID \
        --region=REGION \
        --image-version=IMAGE \
        --properties=PROPERTIES
    

    הערות:

    • CLUSTER_NAME: שם האשכול, שחייב להיות ייחודי בתוך פרויקט. השם חייב להתחיל באות קטנה, ויכול להכיל עד 51 אותיות קטנות, מספרים ומקפים. הוא לא יכול להסתיים במקף. אפשר לעשות שימוש חוזר בשם של אשכול שנמחק.
    • PROJECT_ID: הפרויקט שאליו רוצים לשייך את האשכול.
    • REGION: האזור של Compute Engine שבו ימוקם האשכול, למשל us-central1.
      • אפשר גם להוסיף את הדגל --zone=ZONE (אופציונלי) כדי לציין אזור בתוך האזור שצוין, כמו us-central1-a. אם לא מציינים אזור, התכונה מיקום אוטומטי באזור של Managed Service for Apache Spark בוחרת אזור עם האזור שצוין.
    • IMAGE: שיפורים בביצועים ובאופטימיזציה של Managed Service for Apache Spark זמינים בגרסאות התמונות של Managed Service for Apache Spark‏ 2.0.69+ ו-2.1.17+ ומגרסאות מאוחרות יותר. אם לא מציינים את הדגל הזה, Managed Service for Apache Spark יבחר את הגרסה המשנית האחרונה של תמונת ברירת המחדל של Managed Service for Apache Spark עבור האשכול (ראו גרסת ברירת המחדל של תמונת Managed Service for Apache Spark).
    • PROPERTIES:

      • כדי להפעיל שיפורים באופטימיזציה של Spark, מציינים:
      spark:spark.dataproc.enhanced.optimizer.enabled=true
      
      • כדי להפעיל שיפורים בהרצת Spark, צריך לציין:
      spark:spark.dataproc.enhanced.execution.enabled=true
      
      • כדי להפעיל אופטימיזציה של Spark ושיפורים בביצוע, מציינים:
      spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
      

API

  1. מציינים את הפרטים הבאים SoftwareConfig.properties כחלק מבקשת clusters.create:

    • כדי להפעיל שיפורים באופטימיזציה של Spark, מציינים:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true"
    
    • כדי להפעיל שיפורים בהרצת Spark, צריך לציין:
    "spark:spark.dataproc.enhanced.execution.enabled": "true"
    
    • כדי להפעיל אופטימיזציה של Spark ושיפורים בביצוע, מציינים:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
    

הפעלה או השבתה של שיפורים בשליחת משימה

אפשר להשתמש במסוף Google Cloud , ב-Google Cloud CLI וב-Dataproc API כדי להפעיל או להשבית שיפורים בביצועים של Spark בעבודת Spark שנשלחה אל Managed Service for Apache Spark.

המסוף

  1. במסוף Google Cloud , פותחים את הדף Jobs.
  2. בדף משימות, לוחצים על שליחת משימה וגוללים לקטע מאפיינים של המשימה.
    1. כדי להפעיל שיפורים באופטימיזציה של Spark:
      1. לוחצים על + הוספת מאפיינים. מוסיפים את המחרוזת spark.dataproc.enhanced.optimizer.enabled בשדה Key ואת המחרוזת true בשדה Value.
    2. כדי להפעיל שיפורים בביצוע של Spark:
      1. לוחצים על + הוספת מאפיינים.
      2. מוסיפים את הערך spark.dataproc.enhanced.execution.enabled בשדה Key ואת הערך true בשדה Value.
  3. ממלאים את שאר השדות או מאשרים אותם, ואז לוחצים על Submit (שליחה).

gcloud

  1. מריצים את הפקודה הבאה gcloud dataproc jobs submit באופן מקומי בחלון טרמינל או ב-Cloud Shell.

    gcloud dataproc jobs submit SPARK_JOB_TYPE \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --properties=PROPERTIES
    

    הערות:

    • SPARK_JOB_TYPE: מציינים spark, ‏ pyspark, ‏ spark-sql או spark-r .
    • CLUSTER_NAME: שם המשימה שבה המשימה תפעל.
    • REGION: האזור שבו נמצא האשכול.
    • PROPERTIES:

      • כדי להפעיל שיפורים באופטימיזציה של Spark, מציינים:
      spark.dataproc.enhanced.optimizer.enabled=true
      
      • כדי להפעיל שיפורים בהרצת Spark, צריך לציין:
      spark.dataproc.enhanced.execution.enabled=true
      
      • כדי להפעיל אופטימיזציה של Spark ושיפורים בביצוע, מציינים:
      spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
      

API

  1. מציינים את הפרטים הבאים properties עבור SparkJob,‏ PySparkJob,‏ SparkSqlJob או SparkRJob כחלק מבקשת jobs.submit:

    • כדי להפעיל שיפורים באופטימיזציה של Spark, מציינים:
    "spark.dataproc.enhanced.optimizer.enabled=true"
    
    • כדי להפעיל שיפורים בהרצת Spark, צריך לציין:
    "spark.dataproc.enhanced.execution.enabled=true"
    
    • כדי להפעיל אופטימיזציה של Spark ושיפורים בביצוע, מציינים:
    "spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"