במאמר הזה מוסבר איך להפעיל את השיפורים בביצועים של Dataproc Spark כדי לעזור לעבודות של Dataproc Spark לעבד יותר נתונים בפחות זמן ובעלויות נמוכות יותר.
השיפורים בביצועים של Dataproc Spark כוללים:
- שיפורים ב-Spark Optimizer:
- כללי אופטימיזציה שנכתבו כדי לשפר את תוכניות Spark
- שיפור הביצועים של המחבר Dataproc BigQuery כשמשתמשים בו במשימות Spark
- שיפורים בהרצת Spark:
- שיפורים במנוע ההפעלה של Spark
שיפורים נוספים בביצועים של Dataproc: במאמר בנושא שמירת נתונים במטמון באשכול Dataproc מוסבר איך לקצר את הזמן שנדרש לגישה לנתונים ב-Cloud Storage.
אפשר להפעיל שיפורים בביצועים של Spark באשכול או במשימת Spark:
שיפורי הביצועים של Spark מופעלים באשכול וחלים כברירת מחדל על כל עבודות Spark שמופעלות באשכול, בין אם הן נשלחות לשירות Dataproc או נשלחות ישירות לאשכול.
אפשר גם להפעיל או להשבית שיפורים בביצועים של Spark במשימה שנשלחת לשירות Dataproc. הגדרות לשיפור הביצועים של 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+ וגרסאות תמונה חדשות יותר.
המסוף
- במסוף Google Cloud , פותחים את הדף Dataproc Create a cluster.
- בטופס Create Dataproc cluster (יצירת אשכול Dataproc), לוחצים על Create (יצירה) בשורה Cluster on Compute Engine (אשכול ב-Compute Engine).
- בדף יצירת אשכול Dataproc ב-Compute Engine, לוחצים על החלונית התאמה אישית של האשכול וגוללים לקטע מאפייני האשכול.
- כדי להפעיל שיפורים באופטימיזציה של Spark:
- לוחצים על + הוספת מאפיינים.
- בוחרים באפשרות spark ברשימה Prefix, ואז מוסיפים את הערך spark.dataproc.enhanced.optimizer.enabled בשדה Key ואת הערך true בשדה Value.
- כדי להפעיל שיפורים בביצוע של Spark:
- לוחצים על + הוספת מאפיינים.
- בוחרים באפשרות spark ברשימה Prefix, ואז מוסיפים את הערך spark.dataproc.enhanced.execution.enabled בשדה Key ואת הערך true בשדה Value.
- כדי להפעיל שיפורים באופטימיזציה של 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. אם לא מציינים אזור, התכונה 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
מציינים את הפרטים הבאים
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.
המסוף
- במסוף Google Cloud , פותחים את הדף Dataproc 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"