2015-01-14 4 views
8

स्थिर विभाजन के लिए https://spark.apache.org/docs/latest/job-scheduling.html दस्तावेज़ों के इस पृष्ठ में यह कहता है "इस दृष्टिकोण के साथ, प्रत्येक एप्लिकेशन को अधिकतम संसाधनों का उपयोग किया जा सकता है"।क्या नियंत्रित करता है कि किसी एप्लिकेशन को स्पार्क क्लस्टर कितना दिया जाता है?

मैं बस सोच रहा था, ये अधिकतम संसाधन क्या हैं? मुझे प्रति निष्पादक सेटिंग मेमोरी मिली (गतिशील विभाजन में बस नीचे उल्लिखित) यह मुझे लगता है कि एक एप्लिकेशन को प्राप्त होने वाले मेमोरी संसाधन को सीमित करता है। लेकिन क्या निर्णय लेता है कि कितने निष्पादक शुरू किए गए हैं/क्लस्टर से कितने नोड्स का उपयोग किया जाता है उदा। कुल क्लस्टर मेमोरी और कोर जो "ले लिया" मिलता है?

एक और समान नोट पर प्रति नौकरी या कार्य स्तर पर मांग की गई स्मृति को बदलने का कोई तरीका है?

उत्तर

11

संसाधनों की मात्रा विभिन्न क्लस्टर प्रबंधकों के रूप में उपयोग किए जाने वाले क्लस्टर प्रबंधक पर निर्भर करती है, अलग-अलग आवंटन प्रदान करेगा।

जैसे स्टैंडअलोन मोड में, स्पार्क सभी नोड्स का उपयोग करने का प्रयास करेगा। 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 होगा।

+0

खूबसूरती से लिखा गया। सिर्फ एक फॉलो-अप प्रश्न, प्रति आवेदन प्रति निष्पादक एक से अधिक कार्य शुरू करने का कोई तरीका है? यह प्रश्न मेरे परिदृश्य से आया है जहां मेरे क्लस्टर पर केवल एक ही एप्लिकेशन चल रहा है और प्रति निष्पादक की आदर्श संख्या 2 से 3 है, मुझे लगता है – Suresh

संबंधित मुद्दे