2017-05-07 21 views
9

yarn.scheduler.maximum-allocation-mb और yarn.nodemanager.resource.memory-mb के बीच क्या अंतर है?`yarn.scheduler.maximum-allocation-mb` और` yarn.nodemanager.resource.memory-mb` के बीच अंतर?

मैं इन दोनों को yarn-site.xml में देखता हूं और मुझे स्पष्टीकरण here दिखाई देता है।

yarn.scheduler.maximum-allocation-mb निम्नलिखित परिभाषा दी गई है: एमबी में आरएम में प्रत्येक कंटेनर अनुरोध के लिए अधिकतम आवंटन। इससे अधिक मेमोरी अनुरोध एक अवैधResourceRequestException फेंक देंगे। क्या इसका मतलब संसाधन संसाधन पर केवल स्मृति अनुरोध इस मूल्य से सीमित हैं?

और yarn.nodemanager.resource.memory-mbकी परिभाषा दी गई है, एमबी में भौतिक स्मृति की मात्रा, जिसे कंटेनरों के लिए आवंटित किया जा सकता है। क्या इसका मतलब पूरे क्लस्टर में सभी कंटेनर के लिए कुल राशि है, जो एक साथ सम्मिलित है?

होवेवर, मैं अभी भी इनके बीच नहीं समझ सकता। वे स्पष्टीकरण मुझे सोचते हैं कि वे वही हैं।

और भी भ्रमित, उनके डिफ़ॉल्ट मान बिल्कुल समान हैं: 8192 एमबी। मैं इनके बीच अंतर कैसे बता सकता हूं? धन्यवाद।

उत्तर

15

एक परिदृश्य में विचार करें जहां आप एक क्लस्टर स्थापित कर रहे हैं जहां प्रत्येक मशीन में 48 जीबी रैम है। इनमें से कुछ रैम ऑपरेटिंग सिस्टम और अन्य स्थापित अनुप्रयोगों के लिए आरक्षित होना चाहिए।

yarn.nodemanager.resource.memory-एमबी:

भौतिक स्मृति की मात्रा, एमबी में, कि कंटेनर के लिए आवंटित किया जा सकता है। इसका मतलब है कि स्मृति की मात्रा YARN इस नोड पर उपयोग कर सकती है और इसलिए यह गुण उस मशीन की कुल स्मृति के बाद कम होना चाहिए।

<name>yarn.nodemanager.resource.memory-mb</name> 
<value>40960</value> <!-- 40 GB --> 

अगला चरण कंटेनरों में उपलब्ध कुल संसाधनों को तोड़ने के तरीके पर यार्न मार्गदर्शन प्रदान करना है। आप कंटेनर के लिए आवंटित करने के लिए रैम की न्यूनतम इकाई निर्दिष्ट करके ऐसा करते हैं।

yarn-site.xml में

<name>yarn.scheduler.minimum-allocation-mb</name> <!-- RAM-per-container -> 
<value>2048</value> 

yarn.scheduler.maximum-आवंटन-एमबी:

यह एमबी

में एक कंटेनर के लिए अधिकतम स्मृति आवंटन उपलब्ध परिभाषित करता है

यह आर एम का मतलब "yarn.scheduler.minimum-allocation-mb" की वृद्धि में कंटेनरों को केवल स्मृति आवंटित कर सकते हैं और "yarn.scheduler.maximum-allocation-mb" से अधिक नहीं हो सकते हैं और यह शोल नोड की कुल आवंटित स्मृति अधिक नहीं हो।

yarn-site.xml

<name>yarn.scheduler.maximum-allocation-mb</name> <!-Max RAM-per-container-> 
<value>8192</value> 

MapReduce अनुप्रयोगों के लिए में, यार्न प्रक्रियाओं को एक नक्शा या एक कंटेनर में और एक ही मशीन पर कार्य को कम कंटेनरों की संख्या हो सकता है। हम प्रत्येक नोड पर 20 कंटेनर की एक अधिकतम के लिए अनुमति देने के लिए, और इस प्रकार (40 जीबी की कुल रैम) की जरूरत है/(कंटेनरों के 20 #) = संपत्ति के द्वारा नियंत्रित कंटेनर प्रति 2 GB न्यूनतम चाहते yarn.scheduler.minimum-allocation-mb

फिर हम प्रतिबंधित करना चाहते हैं एक कंटेनर संपत्ति "yarn.scheduler.maximum-allocation-mb"

उदाहरण के लिए द्वारा नियंत्रित के लिए अधिकतम मेमोरी उपयोग, अगर एक नौकरी नक्शा कंटेनर प्रति 2049 एमबी मेमोरी (mapreduce.map.memory.mb=2048 set in mapred-site.xml) के लिए पूछ रहा है, आर एम यह एक 4096 एमबी (2*yarn.scheduler.minimum-allocation-mb) कंटेनर दे देंगे।

यदि आपके पास एक विशाल एमआर नौकरी है जो 99 99 एमबी मानचित्र कंटेनर मांगती है, तो त्रुटि संदेश के साथ नौकरी की जाएगी।

+0

बहुत बढ़िया जवाब !! – Candic3

+0

' ' - मुझे नहीं लगता कि यह आवश्यक है "राम प्रति कंटेनर" क्योंकि मुझे लगता है कि 'spark.executor.memory' यह है कि प्रति कंटेनर कितनी मेमोरी सेट है/निष्पादक। – Candic3

+0

HOW इन सेटिंग्स स्पार्क के साथ बातचीत करते हैं? मुझे लगता है कि स्पार्क इन सेटिंग्स को ओवरराइड करेगा, सही? विशेष रूप से यदि कोई क्षमता शेड्यूलर का उपयोग कर रहा है .... – Candic3

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