2011-07-29 14 views
10

मैं पाइथन में लिखे गए मैपर और रेड्यूसर के साथ हडोप (अमेज़ॅन के ईएमआर पर) में स्ट्रीमिंग नौकरी चला रहा हूं। मैं स्पीड लाभों के बारे में जानना चाहता हूं, यदि मैं जावा में एक ही मैपर और रेड्यूसर लागू करता हूं (या सुअर का उपयोग करता हूं)।हडोप में स्ट्रीमिंग या कस्टम जार

विशेष रूप से, मैं स्ट्रीमिंग से कस्टम जार तैनाती और/या सुअर और इन विकल्पों के बेंचमार्क तुलना वाले दस्तावेज़ों में माइग्रेट करने पर लोगों के अनुभवों की तलाश में हूं। मुझे यह question मिला, लेकिन उत्तर मेरे लिए पर्याप्त विशिष्ट नहीं हैं। मैं जावा और पायथन के बीच तुलना की तलाश नहीं कर रहा हूं, लेकिन हैडोप और पायथन-आधारित स्ट्रीमिंग में कस्टम जार परिनियोजन के बीच तुलना।

मेरा काम Google पुस्तकें एनजीग्रैम डेटासेट से एनजीआरएम गणना पढ़ रहा है और कुल उपायों की गणना कर रहा है। ऐसा लगता है कि गणना नोड्स पर सीपीयू उपयोग 100% के करीब है। (मैं सीपीयू-बाउंड या आईओ-बाउंड नौकरी रखने के मतभेदों के बारे में भी आपकी राय सुनना चाहता हूं)।

धन्यवाद!

अमैका

उत्तर

4

कस्टम जारों को तैनात करने पर विचार क्यों करें?

  • अधिक शक्तिशाली कस्टम इनपुट प्रारूपों का उपयोग करने की क्षमता। नौकरियों को स्ट्रीम करने के लिए, भले ही आप here का उल्लेख करते हुए प्लग करने योग्य इनपुट/आउटपुट का उपयोग करते हैं, फिर भी आप अपने मैपर/रेड्यूसर को टेक्स्ट/स्ट्रिंग होने के लिए कुंजी और मान तक सीमित हैं। आपको अपने आवश्यक प्रकार में कनवर्ट करने के लिए कुछ मात्रा में CPU चक्र खर्च करना होगा।
  • Ive भी सुना है कि Hadoop कई नौकरियां भर JVMs जो अभ्यस्त संभव है जब स्ट्रीमिंग हो पुन: उपयोग के बारे में स्मार्ट हो सकता है (यह पुष्टि नहीं कर सकता)

जब सुअर उपयोग कैसे करें?

  • Pig Latin बहुत अच्छा है और जावा/पायथन या पर्ल की तुलना में बहुत अधिक स्तर की डेटा प्रवाह भाषा है। आपकी सुअर स्क्रिप्ट एक अन्य समतुल्य कार्य

सुअर का उपयोग न करने के लिए समकक्ष कार्य से बहुत छोटी होगी।

  • हालांकि सुअर से ही पता लगाना पर बहुत अच्छी कितने नक्शे/कम करने और जब एक नक्शे के अंडे देने के लिए या कम करने और इस तरह की चीजों के असंख्य, अगर तुम मर यकीन है कि कितने नक्शे/कम करने की जरूरत है और है आपके पास कुछ मानचित्र हैं जो आपको अपने मानचित्र/कार्यों को कम करने के लिए आवश्यक हैं और आप प्रदर्शन के बारे में बहुत विशिष्ट हैं, तो आपको अपने स्वयं के जारों को तैनात करने पर विचार करना चाहिए। यह link दिखाता है कि सुअर प्रदर्शन में देशी हैडोप एम/आर को अंतराल कर सकता है। तुम भी लिख पर एक नज़र ले सकता है अपनी खुद की सुअर UDFs जो कुछ गणना गहन समारोह को अलग (और संभवतः भी कुछ देशी C/C++ यूडीएफ के भीतर कोड कॉल करने के लिए JNI का उपयोग करें) आईओ और सीपीयू बाध्य नौकरियों पर

एक नोट :

  • तकनीकी रूप से, Hadoop के पूरे मुद्दे और कम करने के नक्शे गणना गहन कार्यों parallelize करने के लिए है, तो मैं अपने नक्शे अनुमान और कम करने की नौकरियों गणना गहन हैं चाहते हैं। एकमात्र समय हैडोप उपप्रणाली आईओ करने में व्यस्त है मानचित्र के बीच में है और नेटवर्क को डेटा भेजते समय चरण को कम करता है।इसके अलावा यदि आपके पास बड़ी मात्रा में डेटा है और आपने मैन्युअल रूप से बहुत कम मानचित्र कॉन्फ़िगर किए हैं और परिणामस्वरूप डिस्क में फैलता है (हालांकि बहुत से कार्यों के परिणामस्वरूप जेवीएम शुरू करने/रोकने में बहुत अधिक समय लगेगा और बहुत सी छोटी फाइलें)। स्ट्रीमिंग जॉब में पाइथन/पर्ल वीएम शुरू करने के अतिरिक्त ओवरहेड भी होंगे और जेवीएम और स्क्रिप्टिंग वीएम के बीच डेटा कॉपी और कॉपी किया जा रहा है।
+0

धन्यवाद! चूंकि मेरे पास पहले से ही सादा पाठ इनपुट/आउटपुट आवश्यकताएं हैं, इसलिए कस्टम इनपुट प्रारूप मेरे मामले में अप्रासंगिक हैं। सुअर का मूल्यांकन मुझे बताता है कि मैं इससे दूर रह सकता हूं। मेरे पास पहले से ही पाइथन कार्यान्वयन है। मेरी स्क्रिप्ट सीपीयू-गहन हैं। वे सिर्फ मानक इनपुट से पढ़ते हैं, कुछ संख्या क्रंचिंग करते हैं, और परिणाम आउटपुट करते हैं। लेकिन मुझे यकीन नहीं है कि इसका मतलब है कि मेरा हैडोप नौकरी पूरी तरह से सीपीयू-बाध्य माना जा सकता है। किसी भी मामले में, मैं वास्तव में पूछना चाहता था कि क्या नौकरी सीपीयू-बाध्य या आईओ-बाध्य है और क्या इसे कस्टम जार या स्ट्रीमिंग जॉब के रूप में लागू किया गया है या नहीं। –

+0

इस तथ्य को ध्यान में रखते हुए कि आपका मानचित्र और घटा कार्य अपने स्वयं के जेवीएम पर चल रहा है, और तथ्य यह है कि आम तौर पर मानचित्र और कार्यों को कम करने के लिए सीपीयू बाध्य होते हैं, ये व्यक्तिगत हडोप कार्य सीपीयू बाध्य होगा। हडोप नौकरी के लिए समन्वय जेवीएम शायद आईओ गहन होगा क्योंकि नक्शा में डेटा भेजने और परत को कम करने के व्यक्तिगत कार्यों से प्रतिक्रिया के लिए प्रतीक्षा में व्यस्त है। –

+0

दरअसल, मुझे अभी एहसास हुआ, जेवीएम जिस पर मानचित्र और कार्य कम हो रहा है, कुछ आईओ (एचडीएफएस से इनपुट में स्ट्रीमिंग और आउटपुट को एचडीएफएस में लिखना) को भी संभालता है। चूंकि हडूप यह सुनिश्चित करता है कि नक्शा फ़ंक्शन डेटा के नजदीक किया जाता है, जो आम तौर पर बहुत तेज होता है (यह कम कार्य के लिए सच नहीं है)। –

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