Hadoop MapReduce Join & उदाहरण के साथ काउंटर

विषय - सूची:

Anonim

Mapreduce में क्या शामिल है?

Mapreduce Join ऑपरेशन का उपयोग दो बड़े डेटासेट को मिलाने के लिए किया जाता है। हालांकि, इस प्रक्रिया में वास्तविक जॉइन ऑपरेशन करने के लिए बहुत सारे कोड लिखना शामिल है। प्रत्येक डेटासेट के आकार की तुलना करके दो डेटासेट को जोड़ना शुरू होता है। यदि एक डेटासेट अन्य डेटासेट की तुलना में छोटा होता है तो क्लस्टर में हर डेटा नोड पर छोटे डेटा वितरित किए जाते हैं।

MapReduce में शामिल होने के बाद, या तो Mapper या Reducer छोटे डेटासेट का उपयोग करता है, जो बड़े डेटासेट से मिलान रिकॉर्ड के लिए लुकअप करता है और फिर आउटपुट रिकॉर्ड बनाने के लिए उन रिकॉर्ड को संयोजित करता है।

इस ट्यूटोरियल में, आप सीखेंगे-

  • MapReduce में एक Join क्या है?
  • सम्मिलित होने के प्रकार
  • दो डेटासेट कैसे जुड़ें: MapReduce उदाहरण
  • MapReduce में काउंटर क्या है?
  • MapReduce काउंटरों के प्रकार
  • काउंटर उदाहरण

सम्मिलित होने के प्रकार

उस स्थान पर निर्भर करता है जहाँ वास्तविक जुड़ाव किया जाता है, Hadoop में जुड़ने को इसमें वर्गीकृत किया जाता है-

1. मैप-साइड जॉइन - जब मैपर द्वारा ज्वाइन किया जाता है, तो इसे मैप-साइड जॉइन कहा जाता है। इस प्रकार में, डेटा को वास्तव में मानचित्र फ़ंक्शन द्वारा खपत किए जाने से पहले शामिल किया जाता है। यह अनिवार्य है कि प्रत्येक मानचित्र का इनपुट विभाजन के रूप में हो और क्रमबद्ध क्रम में हो। इसके अलावा, विभाजन की एक समान संख्या होनी चाहिए और इसे सम्मिलित कुंजी द्वारा सॉर्ट किया जाना चाहिए।

2. रिड्यूस-साइड जॉइन - जब रिड्यूसर द्वारा जॉइन किया जाता है, तो इसे कम-साइड जॉइन कहा जाता है। एक संरचित रूप (या विभाजन) में डेटासेट के लिए इसमें शामिल होने की कोई आवश्यकता नहीं है।

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

Hadoop में जुड़ने की एक संपूर्ण प्रक्रिया का प्रवाह नीचे चित्र में दिखाया गया है।

Hadoop MapReduce में शामिल होने के प्रकार

दो डेटासेट कैसे जुड़ें: MapReduce उदाहरण

दो अलग-अलग फ़ाइलों में डेटा के दो सेट हैं (नीचे दिखाया गया है)। कुंजी Dept_ID दोनों फ़ाइलों में सामान्य है। लक्ष्य इन फ़ाइलों को संयोजित करने के लिए MapReduce Join का उपयोग करना है

फ़ाइल 1
फाइल 2

इनपुट: इनपुट डेटा सेट एक txt फ़ाइल, DeptName.txt और DepStrength.txt है

यहां से इनपुट फाइल डाउनलोड करें

सुनिश्चित करें कि आपके पास Hadoop स्थापित है। इससे पहले कि आप MapReduce के साथ शुरू करें उदाहरण के लिए वास्तविक प्रक्रिया में शामिल हों, उपयोगकर्ता को 'hduser' में बदलें (आईडी का उपयोग Hadoop कॉन्फ़िगरेशन के दौरान, आप अपने Hadoop कॉन्फ़िगरेशन के दौरान उपयोग किए गए उपयोगकर्ता के लिए स्विच कर सकते हैं)।

su - hduser_

चरण 1) ज़िप फ़ाइल को अपनी पसंद के स्थान पर कॉपी करें

चरण 2) जिप फाइल को अनकम्प्रेस करें

sudo tar -xvf MapReduceJoin.tar.gz

चरण 3) निर्देशिका पर जाएं MapReduceJoin /

cd MapReduceJoin/

चरण 4) Hadoop प्रारंभ करें

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

चरण 5) DeptStrength.txt और DeptName.txt इस MapReduce Join उदाहरण प्रोग्राम के लिए उपयोग की जाने वाली इनपुट फाइलें हैं।

इन फ़ाइल को कमांड के नीचे प्रयोग करके HDFS में कॉपी किया जाना चाहिए-

$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /

चरण 6) नीचे कमांड का उपयोग करके कार्यक्रम चलाएं-

$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin

चरण 7) निष्पादन के बाद, आउटपुट फ़ाइल (जिसका नाम 'part-00000' है) को XFS में डायरेक्ट्री / आउटपुट_मैप्रेड्यूजेज में संग्रहित किया जाएगा।

कमांड लाइन इंटरफेस का उपयोग करके परिणाम देखे जा सकते हैं

$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000

परिणाम वेब इंटरफेस के माध्यम से भी देखे जा सकते हैं-

अब ' फाइल्स सिस्टम को ब्राउज़ करें ' चुनें और '' आउटपुट '' पर जाएँ

ओपन पार्ट- r-00000

परिणाम दिखाए गए हैं

नोट: कृपया ध्यान दें कि अगली बार इस कार्यक्रम को चलाने से पहले, आपको आउटपुट निर्देशिका / output_mapreducejoin को हटाना होगा

$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin

वैकल्पिक आउटपुट आउटपुट के लिए एक अलग नाम का उपयोग करना है।

MapReduce में काउंटर क्या है?

MapReduce में एक काउंटर MapReduce नौकरियों और घटनाओं के बारे में सांख्यिकीय जानकारी एकत्र करने और मापने के लिए उपयोग किया जाता है। काउंटर्स MapReduce में विभिन्न कार्य आंकड़ों का ट्रैक रखते हैं जैसे कि ऑपरेशन की संख्या और संचालन की प्रगति। MapReduce में समस्या निदान के लिए काउंटरों का उपयोग किया जाता है।

Hadoop काउंटर एक नक्शे के लिए कोड में लॉग संदेश डालने या कम करने के समान हैं। यह जानकारी MapReduce जॉब प्रोसेसिंग में किसी समस्या के निदान के लिए उपयोगी हो सकती है।

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

MapReduce काउंटरों के प्रकार

मूल रूप से MapReduce Counters के 2 प्रकार हैं

    1. Hadoop अंतर्निहित काउंटर: कुछ अंतर्निहित Hadoop काउंटर हैं जो प्रति कार्य मौजूद हैं। नीचे बिल्ट-इन काउंटर समूह हैं-
      • MapReduce टास्क काउंटर - अपने निष्पादन समय के दौरान कार्य विशिष्ट जानकारी (जैसे, इनपुट रिकॉर्ड की संख्या) एकत्र करता है।
      • फ़ाइलसिस्टम काउंटरर्स - किसी कार्य द्वारा पढ़ी या लिखी गई बाइट्स की संख्या जैसी जानकारी एकत्र करता है
      • FileInputFormat काउंटर - FileInputFormat के माध्यम से पढ़े जाने वाले कई बाइट्स की जानकारी एकत्र करता है
      • FileOutputFormat काउंटर - FileOutputFormat के माध्यम से लिखे गए कई बाइट्स की जानकारी एकत्र करता है
      • जॉब काउंटर्स - इन काउंटर्स का इस्तेमाल जॉबट्रैक द्वारा किया जाता है। उनके द्वारा एकत्र किए गए आंकड़ों में उदाहरण के लिए, कार्य के लिए लॉन्च किए गए कार्य की संख्या शामिल है।
    2. उपयोगकर्ता परिभाषित काउंटर

अंतर्निहित काउंटरों के अलावा, उपयोगकर्ता प्रोग्रामिंग भाषाओं द्वारा प्रदान की गई समान कार्यक्षमता का उपयोग करके अपने काउंटरों को परिभाषित कर सकता है। उदाहरण के लिए, जावा में 'एनम' का उपयोग उपयोगकर्ता परिभाषित काउंटरों को परिभाषित करने के लिए किया जाता है।

काउंटर उदाहरण

मिसाल और अमान्य मानों की संख्या की गणना करने के लिए काउंटरक्लर्स के साथ MapClass का एक उदाहरण। इस ट्यूटोरियल में उपयोग की गई इनपुट डेटा फ़ाइल हमारा इनपुट डेटा सेट एक CSV फ़ाइल, SalesJan2009.csv है

public static class MapClassextends MapReduceBaseimplements Mapper{static enum SalesCounters { MISSING, INVALID };public void map ( LongWritable key, Text value,OutputCollector output,Reporter reporter) throws IOException{//Input string is split using ',' and stored in 'fields' arrayString fields[] = value.toString().split(",", -20);//Value at 4th index is country. It is stored in 'country' variableString country = fields[4];//Value at 8th index is sales data. It is stored in 'sales' variableString sales = fields[8];if (country.length() == 0) {reporter.incrCounter(SalesCounters.MISSING, 1);} else if (sales.startsWith("\"")) {reporter.incrCounter(SalesCounters.INVALID, 1);} else {output.collect(new Text(country), new Text(sales + ",1"));}}}

कोड स्निपेट के ऊपर Hadoop मैप रिड्यूस में काउंटरर्स का एक उदाहरण कार्यान्वयन दिखाया गया है।

यहाँ, SalesCounters 'enum' का उपयोग करके परिभाषित एक काउंटर है । इसका उपयोग MISSING और INVALID इनपुट रिकॉर्ड को गिनने के लिए किया जाता है ।

कोड स्निपेट में, यदि 'देश' फ़ील्ड में शून्य लंबाई है, तो उसका मान गायब है और इसलिए संबंधित काउंटर SalesCounters.MISSING बढ़ा हुआ है।

इसके बाद, यदि 'बिक्री' फ़ील्ड "से शुरू होती है, तो रिकॉर्ड को INVALID माना जाता है। यह काउंटर SalesCounters.INVALID को बढ़ाकर इंगित किया जाता है