2012-05-07 10 views
12

मुझे पता है कि हम JVM का पुनः उपयोग करने के लिए "mapred.job.reuse.jvm.num.tasks" संपत्ति सेट कर सकते हैं। मेरे प्रश्न हैं:Hadoop मैप्रिडस नौकरियों में JVM का पुन: उपयोग करें

(1) यहां सेट किए जाने वाले कार्यों की संख्या का निर्धारण कैसे करें, -1 या कुछ अन्य सकारात्मक पूर्णांक?

(2) क्या यह एक अच्छा विचार है कि पहले से ही JVMs का पुन: उपयोग करें और इस संपत्ति को मैप्रिडस नौकरियों में -1 के मान पर सेट करें?

बहुत बहुत धन्यवाद!

उत्तर

19

यदि आपके पास बहुत छोटे कार्य हैं जो निश्चित रूप से एक दूसरे के बाद चल रहे हैं, तो यह संपत्ति -1 को सेट करने के लिए उपयोगी है (जिसका अर्थ है कि एक उत्पन्न जेवीएम असीमित बार पुन: उपयोग किया जाएगा)। तो आप बस अपने काम में उपलब्ध क्लस्टर में कार्य की संख्या) -जेवीएम (कार्यों की संख्या) -जेवीएम के बजाय।

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

इसके अलावा लंबे समय तक चलने वाले कार्यों में हेप विखंडन जैसे मुद्दों को आपके प्रदर्शन को कम करने के कारण कार्य प्रक्रिया को फिर से बनाना अच्छा होता है।

इसके अतिरिक्त, यदि आपके पास कुछ मध्य-समय चलने वाली नौकरियां हैं, तो आप अच्छे व्यापार-बंद होने के कारण केवल 2-3 कार्यों का पुन: उपयोग कर सकते हैं।

+0

यदि आप उबर कार्य करने में सक्षम हैं, तो मैपर्स और समान JVM साझा कर सकते हैं? या यह मैपर की तरह ही एक ही जेवीएम साझा कर सकता है और reducers एक ही जेवीएम साझा कर सकते हैं? – MikA

1

जेवीएम पुन: उपयोग (केवल एमआर 1 में संभव) प्रदर्शन के साथ मदद करनी चाहिए क्योंकि यह जेवीएम के स्टार्टअप अंतराल को हटा देता है लेकिन यह केवल मामूली है और कई दोषों के साथ आता है (साइड इफेक्ट्स पढ़ें। अधिकांश कार्य लंबे समय तक चलेंगे (सेकंड या यहां तक ​​कि मिनटों) और स्टार्टअप समय समस्या नहीं होती है जब आप उन कार्य रनों को देखते हैं। आप एक स्वच्छ स्लेट पर एक नया कार्य शुरू करना चाहते हैं। जब आप एक जेवीएम का पुनः उपयोग करते हैं तो एक मौका है कि ढेर पूरी तरह से साफ नहीं है (यह पिछले रनों से खंडित है)। विखंडन से अधिक जीसी हो सकती है और सभी स्टार्ट अप टाइम लाभों को कम कर दिया जा सकता है। अगर स्मृति रिसाव है तो यह स्मृति उपयोग आदि को भी प्रभावित कर सकता है। तो यह बेहतर है कार्यों के लिए एक नया JVM प्रारंभ करें (यदि कार्य उचित रूप से छोटे नहीं हैं)। एमआर 2 (यार्न) में - नए जेवीएम हमेशा कार्यों के लिए शुरू किया जाता है। उबर कार्यों के लिए - यह केवल स्थानीय JVM में कार्य चलाएगा।

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