संसाधनों की मात्रा विभिन्न क्लस्टर प्रबंधकों के रूप में उपयोग किए जाने वाले क्लस्टर प्रबंधक पर निर्भर करती है, अलग-अलग आवंटन प्रदान करेगा।
जैसे स्टैंडअलोन मोड में, स्पार्क सभी नोड्स का उपयोग करने का प्रयास करेगा। spark.max.cores
नियंत्रण करेगा कि कुल नौकरी में कितने कोर नोड्स में होंगे। यदि सेट नहीं है, तो स्पार्क spark.deploy.defaultCores
का उपयोग करेगा। कोर के
डिफ़ॉल्ट संख्या स्पार्क का स्टैंडअलोन मोड में आवेदन करने के लिए देने के लिए अगर वे spark.cores.max निर्धारित नहीं करते हैं: spark.deploy.defaultCores
से दस्तावेज़ आगे इसके उपयोग स्पष्ट करता है। यदि सेट नहीं है, तो अनुप्रयोग हमेशा सभी उपलब्ध कोर प्राप्त करें जब तक कि वे spark.cores.max स्वयं को कॉन्फ़िगर नहीं करते हैं। उपयोगकर्ताओं को से डिफ़ॉल्ट रूप से पूरे क्लस्टर को हड़पने से रोकने के लिए इसे साझा क्लस्टर पर सेट करें।
मेसोस मोटे अनाज मोड में, स्पार्क सभी उपलब्ध कोर डिफ़ॉल्ट रूप से आवंटित करेगा। प्रति नौकरी को सीमित करने के लिए spark.max.cores
का उपयोग करें।
मेसोस में बढ़िया मोड में, स्पार्क नौकरी की आवश्यकता के अनुसार एक कोर प्रति कार्य आवंटित करेगा और बाद में उन्हें जारी करेगा। यह उच्च कार्य आवंटन ओवरहेड की लागत पर उचित उपयोग सुनिश्चित करता है।
यार्न में, प्रति documentation:
स्पार्क यार्न ग्राहक नियंत्रण के लिए --num-निष्पादकों विकल्प कितने निष्पादकों यह क्लस्टर पर आवंटित करेगा, जबकि --executor-स्मृति और - निष्पादक-कोर प्रति निष्पादक संसाधनों को नियंत्रित करते हैं।
स्मृति के संबंध में, spark.executor.memory
का उपयोग करके केवल प्रति निष्पादक प्रति नौकरी या कार्य की कुल मेमोरी सेट करने का कोई तरीका नहीं है। आपके काम को सौंपा गया स्मृति spark.executor.memory x #executors
होगा।
खूबसूरती से लिखा गया। सिर्फ एक फॉलो-अप प्रश्न, प्रति आवेदन प्रति निष्पादक एक से अधिक कार्य शुरू करने का कोई तरीका है? यह प्रश्न मेरे परिदृश्य से आया है जहां मेरे क्लस्टर पर केवल एक ही एप्लिकेशन चल रहा है और प्रति निष्पादक की आदर्श संख्या 2 से 3 है, मुझे लगता है – Suresh