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



Hadoop स्ट्रीमिंग पर यह ब्लॉग पोस्ट बिग डेटा की विनम्र मात्रा को संसाधित करने के लिए पायथन में एक Hadoop MapReduce प्रोग्राम लिखना सीखने के लिए एक कदम-दर-चरण गाइड है।

हर दिन उत्पन्न डिजिटल डेटा की मात्रा डिजिटल मीडिया, अन्य घटनाओं के बीच इंटरनेट ऑफ थिंग्स के आगमन के साथ तेजी से बढ़ रही है। इस परिदृश्य ने इन डेटा को संग्रहीत और हेरफेर करने के लिए अगली पीढ़ी के उपकरणों और प्रौद्योगिकियों को बनाने में चुनौतियों को जन्म दिया है। यह वह जगह है जहाँ Hadoop स्ट्रीमिंग आती है! नीचे दिया गया एक ग्राफ़ है जो 2013 से दुनिया में प्रतिवर्ष उत्पन्न होने वाले डेटा के विकास को दर्शाता है। IDC का अनुमान है कि प्रतिवर्ष बनाए जाने वाले डेटा की मात्रा 2025 में 180 Zettabytes तक पहुंच जाएगी!

data-by-2025-hadoop-streaming





स्रोत: आईडीसी

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



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

Hadoop स्ट्रीमिंग क्या है?

Hadoop स्ट्रीमिंग एक उपयोगिता है जो Hadoop वितरण के साथ आती है। इसका उपयोग बड़े डेटा विश्लेषण के लिए कार्यक्रमों को निष्पादित करने के लिए किया जा सकता है। Hadoop स्ट्रीमिंग को Python, Java, PHP, Scala, Perl, UNIX और कई अन्य भाषाओं का उपयोग करके किया जा सकता है। उपयोगिता हमें मैपर / और रेडर के रूप में किसी भी निष्पादन योग्य या स्क्रिप्ट के साथ मानचित्र बनाने / कम करने की अनुमति देती है। उदाहरण के लिए:

$ HADOOP_HOME / bin / hadoop jar $ HADOOP_HOME / hadoop-स्ट्रीमिंग



-इनपुट myInputDirs

-आउटपुट myOutputDir

-फोल्डर / बिन / बिल्ली

-क्रेडर / बिन / डब्ल्यूसी

पैरामीटर विवरण:

पायथन मैपरेड कोड:

mapper.py #! / usr / bin / python import sys #Word काउंट उदाहरण # इनपुट sys.stdin में लाइन के लिए मानक इनपुट STDIN से आता है: लाइन = line.strip () #remove व्हाट्सएप पर जाने वाले शब्दों को लीड और ट्रैस करता है = line.split ( ) # लाइन को शब्दों में पिरोएं और शब्दों की सूची के लिए शब्दों के रूप में लौटें: # मानक परिणामों के लिए लिखें STDOUT प्रिंट '% s% s'% (शब्द, 1) # शब्द को स्वीकार करें

Reducer.py

#! / usr / bin / python import sys ऑपरेटर इंपोर्ट आइटम से # अपने शब्दकोश में मैप शब्दों के लिए एक डिक्शनरी का उपयोग करते हुए करेंट_ओर्ड = कोई भी current_count = 0 शब्द = कोई नहीं # इनपुट sys.stdin में लाइन के लिए STDIN से आता है: लाइन = लाइन ।strip () शब्द, गिनती = पंक्ति.प्लिट ('', 1) कोशिश करें: ValueError को छोड़कर गिनें = int (काउंट): current_word == शब्द जारी रखें: current_count + = count और: if current_word: '% s% s '% प्रिंट करें (current_word, current_count) current_count = current_word = शब्द गिनें यदि current_word == शब्द: प्रिंट '% s% s'% (current_word, current_count)

Daud:

  1. निम्न सामग्री के साथ एक फ़ाइल बनाएं और इसे word.txt नाम दें।

बिल्ली माउस शेर हिरण शेर शेर हाथी शेर हिरण

  1. Mapper.py और reducer.py लिपियों को उसी फ़ोल्डर में कॉपी करें जहाँ उपरोक्त फ़ाइल मौजूद है।

  1. टर्मिनल खोलें और फ़ाइल की निर्देशिका का पता लगाएं। कोमैंड: ls: डायरेक्टरी में सभी फाइलों को सूचीबद्ध करने के लिए: निर्देशिका / फ़ोल्डर बदलने के लिए

  1. फ़ाइल की सामग्री देखें।
    कमान: बिल्ली फ़ाइल का नाम

> mapper.py की सामग्री

कमांड: कैट mapper.py

> Reducer.py की सामग्री

आदेश: बिल्ली Reducer.py

हम स्थानीय फ़ाइलों (उदाहरण: word.txt) पर मैपर और रिड्यूसर चला सकते हैं। मैप को चलाने और Hadoop डिस्ट्रीब्यूटेड फाइल सिस्टम (HDFS) को कम करने के लिए, हमें इसकी आवश्यकता है हाडूप स्ट्रीमिंग जार। इससे पहले कि हम HDFS पर स्क्रिप्ट्स चलाते हैं, उन्हें स्थानीय स्तर पर चलाने के लिए सुनिश्चित करें कि वे ठीक काम कर रहे हैं।

> मैपर चलाएं

आदेश: cat word.txt | अजगर mapper.py

> Reducer.py चलाएँ

आदेश: cat word.txt | python mapper.py | सॉर्ट -k1,1 | अजगर reducer.py

हम देख सकते हैं कि मैपर और रिड्यूसर उम्मीद के मुताबिक काम कर रहे हैं, इसलिए हमें आगे किसी भी समस्या का सामना नहीं करना पड़ेगा।

चल रहा है Hadoop पर पायथन कोड

Hadoop पर MapReduce कार्य चलाने से पहले, HDFS को स्थानीय डेटा (word.txt) कॉपी करें

> उदाहरण: hdfs dfs -put source_directory hadoop_destination_directory

आदेश: hdfs dfs -put /home/edureka/MapReduce/word.txt / उपयोगकर्ता / edureka

जार फ़ाइल का पथ कॉपी करें

जार के संस्करण के आधार पर Hadoop स्ट्रीमिंग जार का मार्ग है:

/usr/lib/hadoop-2.2.X/share/hadoop/tools/lib/hadoop-streaming-2.2.X.jar

तो अपने टर्मिनल पर Hadoop स्ट्रीमिंग जार का पता लगाएं और पथ की प्रतिलिपि बनाएँ।

आदेश:

जावा प्रोग्राम से कैसे बाहर निकलें

ls /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

MapReduce को रन करें

आदेश:

hadoop jar /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar -file /home/edureka/mapper.py -mapper -mileer mapper.py -file / home / edureka / reducer.py -reducer reducer.py -input / user / edureka / word -output / user / edureka / Wordcount

Hadoop सांख्यिकी और जानकारी के लिए एक बुनियादी वेब इंटरफ़ेस प्रदान करता है। जब Hadoop क्लस्टर ओपन http: // localhost: 50070 ब्राउज़र में चल रहा है। यहाँ Hadoop वेब इंटरफ़ेस का स्क्रीनशॉट है।

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

हम इस कमांड का उपयोग करके टर्मिनल पर आउटपुट देख सकते हैं

आदेश: हडूप fs -cat / user / edureka / Wordcount / part-00000

अब आप सीख चुके हैं कि पायथन में लिखे गए MapReduce प्रोग्राम को Hadoop स्ट्रीमिंग का उपयोग करके कैसे निष्पादित किया जाता है!

Edureka के पास बिग डेटा एंड हडोप पर लाइव और इंस्ट्रक्टर के नेतृत्व वाला कोर्स है, जो उद्योग के चिकित्सकों द्वारा सह-निर्मित है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपके पास वापस आ जाएंगे।