2015-10-08 12 views
6

नमस्ते हमने हाल ही में एमआर 1 से यार्न में अपग्रेड किया है। मुझे पता है कि कंटेनर एक अमूर्त धारणा है, लेकिन मुझे समझ में नहीं आता कि कितने जेवीएम कार्य (मानचित्र, कम, फिल्टर इत्यादि) एक कंटेनर स्पॉन या पूछने का अन्य तरीका है कंटेनर mutltiple नक्शे भर में पुन: प्रयोज्य है या कार्यों को कम करता है। (| सफलता विफल) प्लस कार्य को कम करने की संख्या यह सही है What is a container in YARN?यार्न कंटेनर समझ और ट्यूनिंग

"each mapper and reducer runs on its own container to be accurate!" जिसका मतलब है कि अगर मैं AM लॉग पर नज़र डालें मैं कंटेनर की संख्या मानचित्र कार्यों की संख्या के बराबर आवंटित देखना चाहिए: मैं निम्नलिखित ब्लॉग में पढ़ा है?

मैं आवेदन जीवन चक्र के दौरान कंटेनर परिवर्तन की संख्या पता है, AM अनुरोध, विभाजन, अनुसूचक आदि

लेकिन वहाँ दिए गए आवेदन के लिए कम से कम कंटेनर की प्रारंभिक संख्या का अनुरोध करने के लिए एक रास्ता है पर आधारित है। मुझे लगता है कि एक तरीका उचित-शेड्यूलर कतार को कॉन्फ़िगर करना है। लेकिन क्या ऐसा कुछ और है जो इसे निर्देशित कर सकता है?

एमआर के मामले में यदि मेरे पास mapreduce.map.memory.mb = 3gb और mapreduce.map.cpu.vcores=4 है। मेरे पास yarn.scheduler.minimum-allocation-mb = 1024m और yarn.scheduler.minimum-allocation-vcores = 1 भी है।

क्या इसका मतलब है कि मुझे एक कोर के साथ 4 कोर या 4 कंटेनर वाला एक कंटेनर मिलेगा?

यह भी स्पष्ट नहीं है कि आप mapreduce.map.memory.mb और mapreduce.map.cpu.vcores निर्दिष्ट कर सकते हैं। क्या उन्हें क्लाइंट नोड में सेट किया जाना चाहिए या क्या वे प्रति आवेदन भी सेट कर सकते हैं?

आरएम यूआई या एएम यूआई से भी वर्तमान में दिए गए आवेदन के लिए निर्दिष्ट कंटेनर देखने का कोई तरीका है?

उत्तर

9
  1. कंटेनर एक तार्किक इकाई है। यह एक विशिष्ट मेजबान (नोड प्रबंधक) पर विशिष्ट मात्रा में संसाधनों (मेमोरी, सीपीयू इत्यादि) का उपयोग करने के लिए एक आवेदन प्रदान करता है। मानचित्र में एक कंटेनर का फिर से उपयोग नहीं किया जा सकता है और उसी एप्लिकेशन के लिए कार्यों को कम किया जा सकता है।

उदा। मैं एक MapReduce आवेदन, जो 10 मानचित्रकारों spawns है: Number of mappers

मैं (यह मान विन्यास पैरामीटर से निर्धारित होता है: yarn.nodemanager.resource.cpu-vcores) 8 vCores के साथ एक एकल मेजबान पर इस चला रहा हूँ । डिफ़ॉल्ट रूप से, इस 8. पर सेट है की जांच करें "YarnConfiguration.java"

/** Number of Virtual CPU Cores which can be allocated for containers.*/ 
    public static final String NM_VCORES = NM_PREFIX + "resource.cpu-vcores"; 
    public static final int DEFAULT_NM_VCORES = 8; 

के बाद से वहाँ 10 मानचित्रकारों और 1 आवेदन मास्टर, कंटेनर की कुल संख्या पैदा की हैं है 11. enter image description here

तो, के लिए प्रत्येक नक्शा/कार्य को कम करने के लिए एक अलग कंटेनर लॉन्च हो जाता है।

लेकिन, यार्न में, MapReduce नौकरियों के लिए, वहाँ एक उबेर काम की एक अवधारणा है, जो कई मानचित्रकारों के लिए एक ही कंटेनर और 1 कम करने (https://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml उपयोग करने के लिए उपयोगकर्ता सक्षम बनाता है: वर्तमान में कोड का समर्थन नहीं कर सकते हैं से अधिक एक कम करने और बड़े मूल्यों को अनदेखा कर देगा।)।

  1. कंटेनर की न्यूनतम संख्या निर्दिष्ट करने के लिए कोई कॉन्फ़िगरेशन पैरामीटर उपलब्ध नहीं है। आवश्यक कंटेनरों की संख्या का अनुरोध करने के लिए आवेदन मास्टर की ज़िम्मेदारी है।

  2. yarn.scheduler.minimum-आवंटन-एमबी - कम से कम प्रत्येक कंटेनर के लिए स्मृति का आवंटन (yarn.scheduler.maximum-आवंटन-एमबी हर कंटेनर अनुरोध के लिए अधिकतम आवंटन निर्धारित करता है)

    निर्धारित करता है

    yarn.scheduler.minimum-आवंटन-vcores - प्रत्येक कंटेनर के लिए vCores की न्यूनतम भी आवंटन निर्धारित करता है (yarn.scheduler.maximum-आवंटन-vcores हर कंटेनर अनुरोध के लिए अधिकतम आवंटन निर्धारित करता है)

    आपके मामले में, आप "अनुरोध कर रहे हैं mapreduce.map.memory.mb = 3 मीटर (3MB) और mapreduce.map.cpu.vcores = 4 (4 vCores)।

    तो, आप प्रत्येक नक्शाकार के लिए 4 vCores साथ 1 कंटेनर मिल जाएगा

  3. मापदंडों "mapreduce.map.memory (यह मानते हुए yarn.scheduler.maximum-आवंटन-vcores> = 4 है)। एमबी " और " mapreduce.map.cpu.vcores " मैपर्ड-साइट.एक्सएमएल फ़ाइल में सेट हैं। यदि यह कॉन्फ़िगरेशन पैरामीटर "अंतिम" नहीं है, तो उसे नौकरी सबमिट करने से पहले क्लाइंट में ओवरराइड किया जा सकता है।

  4. हां। एप्लिकेशन के लिए "एप्लिकेशन प्रयास" पृष्ठ से, आप आवंटित कंटेनरों की संख्या देख सकते हैं। ऊपर संलग्न चित्र की जांच करें।

+0

2. कंटेनर के आवेदन मास्टर अनुरोध संख्या की आवश्यकता कैसे होती है। उदाहरण के लिए स्पार्क यार्न-क्लाइंट मोड में मुझे पता है कि यह spark.executor.instances द्वारा परिभाषित किया गया है, लेकिन यह उस चीज़ में अनुवाद कैसे करता है जो यार्न द्वारा समझा जा सकता है। बस सवाल यह है कि यार्न गुण क्या अनुप्रयोग मास्टर को कंटेनरों की संख्या सेट करने की अनुमति देता है। मैं हडोप एएम उदाहरण में निम्नलिखित देखता हूं। 'rsrcRequest.setNumContainers (numContainers); 'क्या आप किसी भी पैरामीटर – nir

+0

के माध्यम से प्रोग्रामेटिक रूप से सेट नहीं होने की पुष्टि कर सकते हैं 5. क्या" एप्लिकेशन प्रयास "पृष्ठ एक नई सुविधा है? मैं इसे 2.5.1 – nir

+0

में नहीं देख रहा हूं आप यहां उदाहरण का जिक्र कर रहे हैं: https://hadoop.apache.org/docs/r0.23.11/hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html। यह उदाहरण एक आवेदन मास्टर लिखने के बारे में बात करता है। एक एएम को यह तय करना है कि उसे कितने कंटेनरों की आवश्यकता है और फिर संसाधन अनुरोध के साथ आरएम को कॉल करें। संसाधनों का अनुरोध करते समय, यह "setNumContainers" विधि को कॉल करके कंटेनर मांगता है। दूसरे बिंदु के लिए मेरा जवाब वही था। –

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