שיפורים בביצועים של Dataproc Spark

במאמר הזה מוסבר איך להפעיל את השיפורים בביצועים של Dataproc Spark כדי לעזור לעבודות של Dataproc Spark לעבד יותר נתונים בפחות זמן ובעלויות נמוכות יותר.

השיפורים בביצועים של Dataproc Spark כוללים:

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

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

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

תמחור

שיפורי הביצועים של Spark לא כרוכים בחיובים נוספים. יחולו התעריפים הרגילים של Dataproc ב-Compute Engine.

לתשומת ליבכם

שיפורי הביצועים של 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 , ב-Google Cloud CLI וב-Dataproc API כדי להפעיל שיפורים בביצועים של Dataproc Spark כשאתם יוצרים אשכול Dataproc עם גרסאות תמונה 2.0.69+,‏ 2.1.17+,‏ 2.2.0+ וגרסאות תמונה חדשות יותר.

המסוף

  1. במסוף Google Cloud , פותחים את הדף Dataproc Create a cluster.
  2. בטופס Create Dataproc cluster (יצירת אשכול Dataproc), לוחצים על Create (יצירה) בשורה Cluster on Compute Engine (אשכול ב-Compute Engine).
  3. בדף יצירת אשכול Dataproc ב-Compute Engine, לוחצים על החלונית התאמה אישית של האשכול וגוללים לקטע מאפייני האשכול.
    1. כדי להפעיל שיפורים באופטימיזציה של Spark:
      1. לוחצים על + הוספת מאפיינים.
      2. בוחרים באפשרות spark ברשימה Prefix, ואז מוסיפים את הערך spark.dataproc.enhanced.optimizer.enabled בשדה Key ואת הערך true בשדה Value.
    2. כדי להפעיל שיפורים בביצוע של Spark:
      1. לוחצים על + הוספת מאפיינים.
      2. בוחרים באפשרות spark ברשימה Prefix, ואז מוסיפים את הערך spark.dataproc.enhanced.execution.enabled בשדה Key ואת הערך true בשדה Value.
  4. ממלאים את שאר השדות ליצירת אשכול או מאשרים אותם, ואז לוחצים על יצירה.

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. אם לא מציינים אזור, התכונה autozone placement של Dataproc בוחרת אזור עם האזור שצוין.
    • IMAGE: האופטימיזציה של Dataproc Spark והשיפורים בביצועים זמינים בגרסאות האימג' של Dataproc‏ 2.0.69+ ו-2.1.17+ ומגרסאות מתקדמות יותר. אם לא מציינים את הדגל הזה, Dataproc יבחר את הגרסה המשנית האחרונה של תמונת ברירת המחדל של Dataproc ב-Compute Engine עבור האשכול (ראו גרסת ברירת המחדל של תמונת Dataproc).
    • 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 שנשלחה לשירות Dataproc.

המסוף

  1. במסוף Google Cloud , פותחים את הדף Dataproc 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"