एक "सादा" जावा प्रोग्राम और एक हैडोप-आधारित, मैपरेडस-आधारित कार्यान्वयन बहुत अलग जानवर हैं और इसकी तुलना करना मुश्किल है। ऐसा नहीं है जैसे हडोप आपके कार्यक्रम का थोड़ा सा समानांतर है; यह एक पूरी तरह से अलग रूप में ऊपर से नीचे के रूप में लिखा गया है।
हैडोप का ओवरहेड है: नौकरी शुरू करने के ऊपर, और मैपर और रेड्यूसर जैसे श्रमिकों को शुरू करना। इसमें डेटा को क्रमबद्ध/deserializing खर्च, इसे स्थानीय रूप से लिखने, और इसे एचडीएफएस में स्थानांतरित करने में बहुत अधिक समय लगता है।
एक हडोप-आधारित कार्यान्वयन हमेशा अधिक संसाधनों का उपभोग करेगा। तो, यह तब तक बचने के लिए कुछ है जब तक आप इससे बच नहीं सकते। यदि आप एक मशीन पर एक गैर-वितरित गणना चला सकते हैं, तो सबसे सरल व्यावहारिक सलाह वितरित नहीं करना है। खुद को परेशानी बचाओ।
महाउट अनुशंसार्थियों के मामले में, मैं आपको बता सकता हूं कि बहुत ही क्रूरता से, एक हैडोप नौकरी एक ही डेटा पर एक गैर-वितरित कार्यान्वयन की तुलना में 2-4x अधिक गणना करता है। जाहिर है कि एल्गोरिदम और अल्गो ट्यूनिंग विकल्पों पर अत्यधिक निर्भर करता है। लेकिन आपको एक नंबर देने के लिए: मैं 4 से कम मशीनों के एक हडोप क्लस्टर से परेशान नहीं होगा।
जाहिर है, अगर आपकी गणना आपके मशीनों में से किसी एक पर फिट नहीं हो सकती है, तो आपके पास वितरित करने के अलावा कोई विकल्प नहीं है। फिर ट्रेडऑफ किस तरह की दीवार घड़ी का समय है जिससे आप बना सकते हैं कि आप कितनी कंप्यूटिंग शक्ति समर्पित कर सकते हैं। अमाहल के कानून का संदर्भ सही है, हालांकि यह हडोप के महत्वपूर्ण उपरांत पर विचार नहीं करता है। उदाहरण के लिए, एन तरीकों को समानांतर करने के लिए, आपको कम से कम एन मैपर/रेड्यूसर की आवश्यकता होती है, और प्रति-मैपर/रेड्यूसर ओवरहेड एन बार लेना पड़ता है। कुछ निश्चित स्टार्टअप/शटडाउन समय भी है।
स्रोत
2011-07-13 18:58:56
स्ट्रिंग का एक टुकड़ा कितना समय है? –
@ शगी मेंढक, जेफ फोस्टर। क्षमा करें, मैं पहले स्पष्ट नहीं था। सवाल यह नहीं था कि "यह कितनी तेज़ी से जा सकता है", यह था कि "धीमे या बस तोड़ने के बजाए मुझे कितनी मशीनों की आवश्यकता होगी।" यही है, यह हैडूप, नक्शा कम करने, महोत्सव चलाने की कम्प्यूटेशनल लागत के बारे में था। अधिक स्पष्ट नहीं होने के लिए मेरी गलती। –