Jeffrey Cross
Jeffrey Cross

किसी भी प्रोग्रामिंग भाषा में एक Hadoop MapReduce जॉब लिखें

Hadoop एक जावा-आधारित वितरित एप्लिकेशन और स्टोरेज फ्रेमवर्क है जो हजारों कमोडिटी मशीनों पर चलने के लिए डिज़ाइन किया गया है। आप इसे Google के खोज बुनियादी ढांचे के एक ओपन सोर्स सन्निकटन के रूप में सोच सकते हैं। याहू!, वास्तव में, Hadoop पर अपनी खोज और विज्ञापन उत्पादों के कई घटक चलाता है, और यह बहुत आश्चर्यजनक नहीं है कि वे परियोजना में एक प्रमुख योगदानकर्ता हैं।

MapReduce सॉफ्टवेयर लिखने के लिए एक विधि है जिसे हजारों मशीनों में समानांतर रूप से बड़ी मात्रा में डेटा को संसाधित करने के लिए समानांतर किया जा सकता है। उदाहरण के लिए, मान लें कि आप दुनिया के सभी अपाचे सर्वर लॉग में, डोमेन द्वारा, रेफरल की संख्या गिनना चाहते हैं। यहां बताया गया है कि आप इसे कैसे करते हैं:

  1. सभी दुनिया को अपने सर्वर लॉग को आपके गिगंटॉर वितरित फ़ाइल सिस्टम पर अपलोड करने के लिए प्राप्त करें। आप प्रत्येक वेब व्यवस्थापक को अपनी साइट पर कुछ जावास्क्रिप्ट कोड जोड़ने के लिए इसे स्वचालित और अनुमानित कर सकते हैं, जिससे उनके आगंतुक के ब्राउज़र आपके स्वयं के सर्वर को पिंग करते हैं, जिसके परिणामस्वरूप दुनिया के सभी सर्वर लॉग की एक विशाल लॉग फ़ाइल होती है। आपकी पसंद का फाइलसिस्टम एचडीएफएस है, हडोप डिस्ट्रीब्यूटेड फाइलसिस्टम, जो आपके सभी क्लस्टर नोड्स के बीच इस विशाल फ़ाइल को विभाजन और प्रतिकृति करने का काम करता है।
  2. दुनिया की सबसे बड़ी लॉग फ़ाइल को छोटे टुकड़ों में विभाजित करें, और आपके हजारों क्लस्टर मशीन टुकड़ों को पार्स करते हैं, रेफरल की तलाश करते हैं। यह "मैप" चरण है। प्रत्येक चंक को संसाधित किया जाता है और उस चंक में पाए जाने वाले रेफ़रर्स को वापस सिस्टम में आउटपुट किया जाता है, जो कि रेफ़रर होस्टनाम द्वारा बंद किए गए आउटपुट को संग्रहीत करता है। चंक असाइनमेंट को ऑप्टिमाइज़ किया जाता है ताकि क्लस्टर नोड्स डेटा के उन हिस्सों को प्रोसेस करें जो वितरित फ़ाइल सिस्टम के उनके स्थानीय टुकड़े पर संग्रहीत होने के लिए होते हैं।
  3. अंत में, मानचित्र चरण से सभी आउटपुट टकरा गए हैं। इसे "घटाना" चरण कहा जाता है। क्लस्टर नोड्स को एक होस्टनाम कुंजी सौंपी जाती है जिसे मैप चरण के दौरान बनाया गया था। उस कुंजी के सभी आउटपुट नोड द्वारा पढ़े जाते हैं और गिने जाते हैं। नोड तब एक एकल परिणाम को आउटपुट करता है जो कि रेफ़र का डोमेन नाम है, और उस रेफ़र से उत्पन्न किए गए रेफरल की कुल संख्या। यह प्रत्येक रेफरर डोमेन के लिए एक बार, सैकड़ों हजारों बार किया जाता है, और हजारों क्लस्टर नोड्स में वितरित किया जाता है।

इस काल्पनिक MapReduce जॉब के अंत में, आप प्रत्येक डोमेन की संक्षिप्त सूची के साथ छोड़ देते हैं जो कि संदर्भित ट्रैफ़िक है, और यह बताती है कि कितने रेफरल दिए गए हैं। Hadoop और MapReduce के बारे में क्या अच्छा है कि यह लेखन को आश्चर्यजनक रूप से सरल जैसे वितरित अनुप्रयोग बनाता है। उदाहरण रेफ़र पार्सिंग करने के लिए दो कार्य केवल कोड की लगभग 20 पंक्तियाँ हो सकती हैं। Hadoop वितरित भंडारण और प्रसंस्करण की अपार चुनौतियों का ख्याल रखता है, जिससे आप अपने विशिष्ट कार्य पर ध्यान केंद्रित कर सकते हैं।

चूँकि Hadoop को Java में लिखा गया है, आपके लिए वितरित नौकरियों को बनाने का स्वाभाविक तरीका है कि आप अपने मैप को कम करें और फ़ंक्शन को जावा क्लास में कम करें। यदि आप एक जावा नशेड़ी नहीं हैं, हालांकि, चिंता न करें, एक नौकरी आवरण है जिसे HadoopStreaming कहा जाता है जो किसी भी प्रोग्राम के साथ संवाद कर सकता है जिसे आप सामान्य STDIN और STDOUT के साथ लिखते हैं। यह आपको पर्ल, पायथन या शेल स्क्रिप्ट में अपनी वितरित नौकरी लिखने देता है! आप दो प्रोग्राम बनाते हैं, एक मैपर के लिए और एक रिड्यूसर के लिए, और HadoopStreaming हैंडल को क्लस्टर नोड्स के सभी में अपलोड करने और आपके प्रोग्राम्स से और उसके पास डेटा भेजने के लिए।

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

किसी भी Hackszine पाठकों Hadoop का उपयोग कर रहे हैं? हमें बताएं कि आप क्या कर रहे हैं और टिप्पणियों में अधिक जानकारी के लिए हमें इंगित करें।

उबंटू लिनक्स पर Hadoop रनिंग Hadoop पायथन में एक Hadoop MapReduce प्रोग्राम लेखन

शेयर

एक टिप्पणी छोड़