במאמר הזה מוסבר איך להפעיל את שיפורי הביצועים של 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 שמופעלים באשכול חלים כברירת מחדל על כל עבודות Spark שמופעלות באשכול, בין אם הן נשלחות אל Managed Service for Apache Spark או נשלחות ישירות אל האשכול.
אפשר גם להפעיל או להשבית שיפורים בביצועים של Spark במשימה שנשלחת אל Managed Service for Apache 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
המסוף
- במסוף Google Cloud , פותחים את הדף Create cluster.
- לוחצים על הגדרה נוספת כדי להרחיב את הקטע.
- עורכים את התאמה אישית ואחר.
- בקטע מאפייני האשכול, מוסיפים את המאפיינים הבאים:
- כדי להפעיל שיפורים באופטימיזציה של Spark:
- לוחצים על + הוספת מאפיינים.
- ברשימה Prefix בוחרים באפשרות spark.
- מזינים
spark.dataproc.enhanced.optimizer.enabledבשדה מפתח ו-trueבשדה ערך.
- כדי להפעיל שיפורים בביצוע של Spark:
- לוחצים על + הוספת מאפיינים.
- ברשימה Prefix בוחרים באפשרות spark.
- מזינים
spark.dataproc.enhanced.execution.enabledבשדה מפתח ו-trueבשדה ערך.
- כדי להפעיל שיפורים באופטימיזציה של Spark:
- ממלאים את שאר השדות של האשכול ולוחצים על יצירת אשכול.
gcloud
מריצים את הפקודה הבאה 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
מציינים את הפרטים הבאים
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.
המסוף
- במסוף Google Cloud , פותחים את הדף Jobs.
- בדף משימות, לוחצים על שליחת משימה וגוללים לקטע מאפיינים של המשימה.
- כדי להפעיל שיפורים באופטימיזציה של Spark:
- לוחצים על + הוספת מאפיינים. מוסיפים את המחרוזת spark.dataproc.enhanced.optimizer.enabled בשדה Key ואת המחרוזת true בשדה Value.
- כדי להפעיל שיפורים בביצוע של Spark:
- לוחצים על + הוספת מאפיינים.
- מוסיפים את הערך spark.dataproc.enhanced.execution.enabled בשדה Key ואת הערך true בשדה Value.
- כדי להפעיל שיפורים באופטימיזציה של Spark:
- ממלאים את שאר השדות או מאשרים אותם, ואז לוחצים על Submit (שליחה).
gcloud
מריצים את הפקודה הבאה 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
- SPARK_JOB_TYPE: מציינים
API
מציינים את הפרטים הבאים
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"