2013-08-23 7 views
20

क्या कोई मुझे बता सकता है कि माध्यमिक सॉर्टिंग हैडूप में कैसे काम करता है?
क्यों GroupingComparator का उपयोग करना चाहिए और यह हैडूप में कैसे काम करता है?हैडूप मानचित्र माध्यमिक सॉर्टिंग को कम करता है

मैं नीचे दिए गए लिंक के माध्यम से जा रहा था और इस बात पर संदेह हो गया कि समूह समूह कैसे काम करता है।
क्या कोई मुझे समझा सकता है कि समूहबद्ध तुलनित्र कैसे काम करता है?

http://www.bigdataspeak.com/2013/02/hadoop-how-to-do-secondary-sort-on_25.html

उत्तर

15

समूहीकरण तुलनाकारी

एक बार डेटा एक कम करने तक पहुँच जाता है, सभी डेटा कुंजी के आधार पर वर्गीकृत किया जाता है। चूंकि हमारे पास एक समग्र कुंजी है, इसलिए हमें यह सुनिश्चित करना होगा कि रिकॉर्ड्स को पूरी तरह से प्राकृतिक कुंजी द्वारा समूहीकृत किया जाए। यह कस्टम ग्रुपपार्टिशनर लिखकर पूरा किया जाता है। हमारे पास रिकॉर्ड्स को समूहबद्ध करने के प्रयोजनों के लिए तापमानपायर वर्ग के वर्ष के क्षेत्र पर विचार करने वाला एक तुलनात्मक वस्तु है।

new-host-2:sbin bbejeck$ hdfs dfs -cat secondary-sort/part-r-00000 

190101 -206

190102 -333

190103 -272

190104 -61

:

public class YearMonthGroupingComparator extends WritableComparator { 

    public YearMonthGroupingComparator() { 
     super(TemperaturePair.class, true); 
    } 

    @Override 
    public int compare(WritableComparable tp1, WritableComparable tp2) { 
     TemperaturePair temperaturePair = (TemperaturePair) tp1; 
     TemperaturePair temperaturePair2 = (TemperaturePair) tp2; 
     return temperaturePair.getYearMonth().compareTo(temperaturePair2.getYearMonth()); 
    } 
} 

यहाँ हमारे माध्यमिक तरह काम चल रहा है के परिणाम हैं

190105 -33

190110 -33

190111 -217

190112 -300

012,

मूल्य के आधार पर डेटा को सॉर्ट करना एक सामान्य आवश्यकता नहीं हो सकती है, लेकिन आवश्यकता होने पर आपकी पीठ में होने के लिए यह एक अच्छा टूल है। इसके अलावा, हम कस्टम विभाजनकर्ताओं और समूह विभाजनकर्ताओं के साथ काम करके हडोप के आंतरिक कार्यकलापों पर गहराई से विचार करने में सक्षम हुए हैं। इस लिंक भी देखें .. What is the use of grouping comparator in hadoop map reduce

+2

आगे के संदर्भ के लिए .. http://codingjunkie.net/secondary-sort/ –

+0

द्वितीयक सॉर्टिंग आंतरिक रूप से कैसे काम करती है? मैपर से reducer का वास्तविक प्रवाह क्या है? – user1585111

+1

समझने के लिए ... इस लिंक को देखें http://answers.oreilly.com/topic/457-introduction-to-mapreduce-workflows/ –

15

यहाँ समूह के लिए एक उदाहरण है। एक समग्र कुंजी (a, b) और इसके मान v पर विचार करें।

(a1, b11) -> v1 
(a1, b12) -> v2 
(a1, b13) -> v3 

डिफ़ॉल्ट समूह तुलनित्र के साथ ढांचे संबंधित साथ reduce समारोह 3 बार फोन करेगा (कुंजी: और मान लेते हैं कि छँटाई के बाद आप अंत, दूसरों के बीच, (कुंजी, मूल्य) जोड़े के निम्नलिखित समूह के साथ जाने , मूल्य) जोड़े, क्योंकि सभी चाबियाँ अलग हैं।हालांकि, यदि आप अपना खुद का कस्टम समूह तुलनित्र प्रदान करते हैं, और इसे परिभाषित करते हैं ताकि यह a पर निर्भर करता है, b को अनदेखा कर देता है, तो ढांचा निष्कर्ष निकाला है कि इस समूह की सभी कुंजी बराबर हैं और निम्न कुंजी का उपयोग करके केवल एक बार कम करने के लिए कॉल को कॉल करती है और मानों की सूची:

(a1, b11) -> <v1, v2, v3> 

ध्यान दें कि केवल पहले समग्र कुंजी प्रयोग किया जाता है, और कहा कि बी 12 और B13 "खो" कर रहे हैं, यानी, कम करने के लिए पारित नहीं।

सालाना अधिकतम तापमान कंप्यूटिंग "हडोप" पुस्तक से प्रसिद्ध उदाहरण में वर्ष a वर्ष है, और b तापमान अवरोही क्रम में क्रमबद्ध हैं, इस प्रकार बी 11 वांछित अधिकतम तापमान है और आप नहीं अन्य b के बारे में परवाह है। कम समारोह केवल उस वर्ष के समाधान के रूप में प्राप्त (ए 1, बी 11) लिखता है।

"bigdataspeak.com" से आपके उदाहरण में सभी b रेड्यूसर में आवश्यक हैं, लेकिन वे संबंधित मानों (ऑब्जेक्ट्स) v के हिस्सों के रूप में उपलब्ध हैं।

इस तरह, कुंजी में अपने मूल्य या उसके हिस्से को शामिल करके, आप केवल अपनी चाबियाँ, बल्कि आपके मूल्यों को क्रमबद्ध करने के लिए हैडोप का उपयोग कर सकते हैं।

उम्मीद है कि इससे मदद मिलती है।

40

मुझे चित्रों की सहायता से कुछ अवधारणाओं को समझना आसान लगता है और यह निश्चित रूप से उनमें से एक है।

आइए मान लें कि हमारा माध्यमिक सॉर्टिंग अंतिम नाम और प्रथम नाम से बना समग्र कुंजी पर है।

Composite Key

रास्ते से बाहर समग्र कुंजी के साथ, अब की सुविधा देता है माध्यमिक छंटाई तंत्र

Secondary Sorting Steps

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

एमआर का अवलोकन कदम

enter image description here

+0

ग्रेट आरेख, धन्यवाद। क्या आपके स्वयं के समूहकरण नियंत्रक को लागू किए बिना इस विधि का उपयोग करना संभव है? –

+0

खूबसूरती से समझाया। क्या आपने इसे किसी पुस्तक से उधार लिया था? यदि हां, तो क्या आप मुझे पुस्तक पर इंगित कर सकते हैं? धन्यवाद। – maddie

+0

धन्यवाद। हां यह [हडोप इन प्रैक्टिस] से है (https://www.manning.com/books/hadoop-in-practice-second-edition)। ऐसा लगता है कि दूसरा संस्करण थोड़ा सा बदल गया है। – Sudarshan

0

उल्लेख उदाहरण से ऊपर अच्छा विवरण है, मुझे आसान बनाने है.हम तीन प्रमुख चरणों को पूरा करने की आवश्यकता है।

  1. Mapout होना चाहिए (Key + मूल्य, मूल्य)
  2. जब हम कुंजी & मूल्य शामिल हो गए हैं। फिर भी हमें मूल कुंजी के साथ-साथ मूल्य पर सॉर्ट करने की आवश्यकता है। इसलिए हम एक कस्टम तुलनित्र जोड़ देंगे।
  3. अब डेटा मूल कुंजी पर सॉर्ट किया गया है, लेकिन यदि हम इस डेटा को reducer पर भेजते हैं, तो यह किसी दिए गए कुंजी के सभी मान को एक reducer को भेजने की गारंटी नहीं देगा क्योंकि हम कुंजी के रूप में कुंजी + मान का उपयोग कर रहे हैं। यह सुनिश्चित करने के लिए कि हम समूह तुलनित्र जोड़ देंगे।
1

एक विभाजनकर्ता यह सुनिश्चित करता है कि एक रेड्यूसर को किसी कुंजी से संबंधित सभी रिकॉर्ड प्राप्त होते हैं लेकिन यह इस तथ्य को नहीं बदलता है कि विभाजन के भीतर कुंजी द्वारा reducer समूह।

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

इसलिए हमें समूह को नियंत्रित करने की आवश्यकता है। इसलिए, हमें समग्र कुंजी की बजाय कुंजी के प्राकृतिक भाग के आधार पर समूह के ढांचे को इंगित करना होगा। इसलिए तुलनित्र समूह को इसके लिए उपयोग करना होगा।

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