ניהול המשאבים

בצינורות אפשר לציין את המעבדים (CPU) והזיכרון שיוקצו ל-Driver ולכל executor. אפשר להגדיר משאבים בהגדרות של צינורות Cloud Data Fusion Studio. מידע נוסף מופיע במאמר בנושא ניהול הגדרות של צינורות.

בדף הזה מפורטות ההנחיות לגבי כמות משאבי ה-driver וה-executor שצריך להגדיר לתרחיש השימוש שלכם.

נהג/ת

מכיוון שהדרייבר לא מבצע הרבה עבודה, ברירת המחדל של מעבד אחד וזיכרון של 2GB מספיקה להרצת רוב צינורות הנתונים. יכול להיות שתצטרכו להגדיל את הזיכרון לצינורות שמכילים שלבים רבים או סכימות גדולות. כמו שצוין במאמר בנושא עיבוד מקביל של פעולות JOIN, אם הצינור מבצע פעולות JOIN בזיכרון, גם מערכי הנתונים בזיכרון צריכים להתאים לזיכרון של מנהל ההתקן.

Executor

כדאי להיעזר בהנחיות הבאות לגבי משאבי מעבד וזיכרון.

CPU

מספר המעבדים שהוקצו למבצע קובע את מספר המשימות שהמבצע יכול להריץ במקביל. כל מחיצה של נתונים דורשת משימה אחת לעיבוד. ברוב המקרים, הכי פשוט להגדיר את מספר המעבדים ל-1, ולהתמקד בהתאמת הזיכרון.

זיכרון

ברוב צינורות עיבוד הנתונים, זיכרון של 4GB מספיק כדי להריץ את צינור עיבוד הנתונים בהצלחה. הצטרפויות עם הטיה חזקה, של כמה טרה-בייט, הושלמו עם זיכרון של 4GB של רכיב ההפעלה. אפשר לשפר את מהירות הביצוע על ידי הגדלת כמות הזיכרון, אבל זה דורש הבנה מעמיקה של הנתונים ושל צינור הנתונים.

‫Spark מחלק את הזיכרון לכמה חלקים. חלק אחד שמור לשימוש פנימי ב-Spark, וחלק אחר שמור לביצוע ולאחסון.

כברירת מחדל, החלק של האחסון והביצוע הוא בערך 60% מהזיכרון הכולל. המאפיין spark.memory.fraction configuration של Spark (ברירת המחדל היא 0.6) קובע את אחוז הזיכרון הזה. הסכום הזה מתאים לרוב עומסי העבודה, ובדרך כלל אין צורך לשנות אותו.

הקטע 'אחסון והפעלה' מחולק עוד יותר למרחבים נפרדים לאחסון ולהפעלה. כברירת מחדל, הגודל של שני המרחבים זהה, אבל אפשר לשנות את הגודל שלהם על ידי הגדרת spark.memory.storageFraction (ברירת המחדל היא 0.5) כדי לקבוע איזה אחוז מהמרחב שמור לאחסון.

בשטח האחסון מאוחסנים נתונים מהמטמון. במרחב הביצוע מאוחסנים נתונים של ערבוב, צירוף, מיון וצבירה. אם יש מקום נוסף בקטע הביצוע, מערכת Spark יכולה להשתמש בחלק ממנו לאחסון נתונים. עם זאת, נתוני ההפעלה אף פעם לא יתפסו נפח אחסון.

אם אתם יודעים שצינור הנתונים לא שומר נתונים במטמון, אתם יכולים להקטין את שטח האחסון כדי לפנות יותר מקום לדרישות הביצוע.

נקודה למחשבה: זיכרון של קונטיינר YARN

ההגדרה של זיכרון המבצע קובעת את כמות הזיכרון שמוקצה למבצעים. ‫Spark מוסיף כמות נוספת של זיכרון לזיכרון מחוץ ל-heap, שנשלט על ידי ההגדרה spark.executor.memoryOverhead, שמוגדרת כברירת מחדל ל-384m. המשמעות היא שכמות הזיכרון ש-YARN שומרת לכל executor גבוהה מהמספר שמוגדר בהגדרות המשאבים של צינור העיבוד. לדוגמה, אם מגדירים את הזיכרון של ה-executor ל-2048m, ‏ Spark מוסיף 384m למספר הזה ומבקש מ-YARN קונטיינר של 2432m. בנוסף, YARN מעגל את מספר הבקשות כלפי מעלה לכפולה של yarn.scheduler.increment-allocation-mb, שערך ברירת המחדל שלה הוא yarn.scheduler.minimum-allocation-mb. אם הערך הוא 512,‏ YARN מעגל את 2,432 מ' כלפי מעלה ל-2,560 מ'. אם הערך הוא 1,024,‏ YARN מעגל את הערך 2,432m כלפי מעלה ל-3,072m. חשוב לזכור את הנקודה הזו כשקובעים את הגודל של כל צומת עובד באשכול.