मैं hadoop-1.0.1
java
भाषा में K means
को लागू करने का प्रयास कर रहा हूं। मैं अब निराश हूँ। हालांकि मुझे k means
के पूर्ण कार्यान्वयन के github लिंक मिला लेकिन Hadoop
में नौसिखिया के रूप में, मैं इसे दूसरे कोड की प्रतिलिपि के बिना सीखना चाहता हूं। मेरे पास और reduce
फ़ंक्शन का hadoop में उपलब्ध फ़ंक्शन का मूल ज्ञान है। क्या कोई मुझे k means
mapper
और reducer
कक्षा को लागू करने का विचार प्रदान कर सकता है। क्या इसे पुनरावृत्ति की आवश्यकता है?के लिए मैपर और रेड्यूसर का अर्थ जावा में हैडोप में एल्गोरिदम
उत्तर
ठीक है, मैं आपको यह बताने के लिए जाता हूं कि मैपरेडस में के-साधनों को लागू करते समय मैंने क्या सोचा था। यह कार्यान्वयन महौत से अलग है, मुख्य रूप से क्योंकि यह दिखाने के लिए कि कैसे एल्गोरिदम वितरित सेटअप (और वास्तविक उत्पादन उपयोग के लिए नहीं) में काम कर सकता है। मैं यह भी मानता हूं कि आप वास्तव में जानते हैं कि के-साधन कैसे काम करते हैं।
होने ने कहा कि हम तीन मुख्य चरण में पूरे एल्गोरिथ्म विभाजित करने के लिए है: स्तर
नौकरी स्तर
- नौकरी स्तर
- मानचित्र स्तर
- कम
नौकरी का स्तर काफी सरल है, यह लिखा है इनपुट में इनपुट (कुंजी =
ClusterCenter
नामक वर्ग और मूल्य =VectorWritable
नामक वर्ग), हैडोप नौकरी के साथ पुनरावृत्ति को संभालना और पूरे काम के आउटपुट को पढ़ना।VectorWritable
इस मामले में मेरे स्वयं के गणित पुस्तकालय से एक क्रमिक कार्यान्वयन है, लेकिन वास्तव में एक साधारण डबल सरणी से कुछ भी नहीं।ClusterCenter
मुख्य रूप सेVectorWritable
है, लेकिन सुविधा कार्यों के साथ जो आमतौर पर केंद्र (उदाहरण के लिए औसत) की आवश्यकता होती है।के-मतलब में आपके पास के-वेक्टर के कुछ बीजसेट हैं जो आपके प्रारंभिक केंद्र और कुछ इनपुट वेक्टर हैं जिन्हें आप क्लस्टर करना चाहते हैं। यह MapReduce में बिल्कुल वही है, लेकिन मैं उन्हें दो अलग-अलग फाइलों में लिख रहा हूं। पहली फ़ाइल में केवल वेक्टर और कुछ डमी कुंजी केंद्र होते हैं और दूसरी फ़ाइल में वास्तविक प्रारंभिक केंद्र होते हैं (अर्थात्
cen.seq
)।डिस्क पर लिखे गए सभी के बाद आप अपना पहला काम शुरू कर सकते हैं। यह निश्चित रूप से पहले
Mapper
लॉन्च करेगा जो अगला विषय है।मानचित्र स्तर
MapReduce में यह हमेशा क्या में आ रहा है और क्या बाहर जा रहा है (वस्तुओं के संदर्भ में) पता करने के लिए स्मार्ट है। तो नौकरी के स्तर से हम जानते हैं कि हमारे पास
ClusterCenter
औरVectorWritable
इनपुट के रूप में है, जबकिClusterCenter
वर्तमान में केवल एक डमी है। निश्चित रूप से हम आउटपुट के समान होना चाहते हैं, क्योंकि नक्शा चरण सामान्य के-साधनों से प्रसिद्ध असाइनमेंट चरण है।आप इनपुट वेक्टर और केंद्रों के बीच तुलना के लिए स्मृति स्तर पर बनाए गए असली केंद्र फ़ाइल को पढ़ रहे हैं।इसलिए आपके पास यह दूरी मीट्रिक परिभाषित है, मैपर में यह
ManhattanDistance
पर हार्डकोड किया गया है। थोड़ा और विशिष्ट होने के लिए, आपको मानचित्र चरण में अपने इनपुट का एक हिस्सा मिलता है और फिर आप प्रत्येक इनपुट "कुंजी मूल्य जोड़ी" (यह एक जोड़ी या टुपल होता है जिसमें कुंजी और मूल्य शामिल होता है) प्रत्येक के साथ तुलना करता है केंद्र। यहां आप ट्रैकिंग कर रहे हैं कि कौन सा केंद्र निकटतम है और उसके बाद इनपुट वेक्टर के साथ डिस्क पर निकटतमClusterCenter
ऑब्जेक्ट लिखकर इसे केंद्र में असाइन करें।आपका आउटपुट तब होता है: n-vectors उनके असाइन किए गए केंद्र (कुंजी के रूप में) के साथ। हैडोप अब आपकी कुंजी द्वारा सॉर्टिंग और ग्रुपिंग कर रहा है, इसलिए आपको कम कार्य में एक ही केंद्र के लिए प्रत्येक असाइन किए गए वेक्टर मिलते हैं।
स्तर को कम
जैसा कि ऊपर कहा, यदि आप एक
ClusterCenter
और कम करने के चरण में उसको दिए गएVectorWritable
के होगा। यह सामान्य के-साधनों में आपके पास सामान्य अपडेट चरण है। तो आप बस सभी वैक्टरों पर पुनरावृत्त कर रहे हैं, उन्हें संक्षेप में और औसत औसत कर रहे हैं।अब आपके पास एक नया "मीन" है जिसका आप तुलना कर सकते हैं जिसका अर्थ पहले सौंपा गया था। यहां आप दो केंद्रों के बीच एक अंतर को माप सकते हैं जो हमें बताता है कि केंद्र कितना स्थानांतरित हुआ। आदर्श रूप से यह स्थानांतरित नहीं होता और
converged
नहीं होता।Hadoop में काउंटर, इस अभिसरण ट्रैक करने के लिए प्रयोग किया जाता है नाम थोड़ा भ्रामक है क्योंकि यह वास्तव में पटरियों कितने केंद्र हैं एक अंतिम बात करने के लिए नहीं कन्वर्ज्ड है, लेकिन मुझे आशा है कि आप इसके साथ रह सकते हैं।
असल में आप अब अगले केंद्र के लिए नया केंद्र और डिस्क पर सभी वैक्टर लिख रहे हैं। क्लीनअप चरण के अतिरिक्त, आप मानचित्र के चरण में उपयोग किए जाने वाले पथ पर सभी नए एकत्रित केंद्र लिख रहे हैं, इसलिए नए पुनरावृत्ति में नए वैक्टर हैं।
अब नौकरी के चरण में, MapReduce नौकरी अब किया जाना चाहिए। अब हम उस नौकरी के काउंटर का निरीक्षण कर रहे हैं ताकि यह पता चल सके कि कितने केंद्र अभी तक एकत्र नहीं हुए हैं। यह काउंटर थोड़ी देर के लिए यह निर्धारित करने के लिए प्रयोग किया जाता है कि पूरा एल्गोरिदम समाप्त हो सकता है या नहीं। यदि नहीं, तो पर वापस जाएं मानचित्र स्तर पैराग्राफ फिर से, लेकिन इनपुट के रूप में पिछले नौकरी से आउटपुट का उपयोग करें।
वास्तव में यह संपूर्ण वूडू था।
स्पष्ट कारणों से इसका उत्पादन में उपयोग नहीं किया जाना चाहिए, क्योंकि इसका प्रदर्शन भयानक है। Mahout के अधिक ट्यून संस्करण का बेहतर उपयोग करें। लेकिन शैक्षणिक उद्देश्यों के लिए यह एल्गोरिदम ठीक है;)
यदि आपके कोई और प्रश्न हैं, तो मुझे एक मेल या टिप्पणी लिखने के लिए स्वतंत्र महसूस करें।
के उपयोगकर्ता परिभाषित है, मेरे उदाहरण के मामले में यह 2 को हार्डकोड किया गया है। मैं आपको बाकी को सॉर्ट करने के लिए एक मेल लिखता हूं;) –
हाय, मैं हड़पने और कोशिश करने के लिए बहुत नया हूं मेरी पहली MapReduce नौकरी को लागू करने के लिए। उदाहरण के लिए केएमन्स के लिए, मैं किसी बिंदु पर अपनी नौकरियों को रोकने के लिए एक पुनरावृत्ति पाश का उपयोग कर रहा हूं लेकिन मुझे समझ में नहीं आ रहा है कि हम पुनरावृत्तियों में उन्हें हटाने के लिए फाइल सिस्टम के अस्तित्व की जांच क्यों करते हैं? इस तरह: अगर (fs.exists (_input_path)) { fs.delete (_input_path, true); } –
- 1. हैडोप में मैपर/रेड्यूसर के सेटअप और क्लीनअप विधियां MapReduce
- 2. हैडोप में क्या मैपर और रेड्यूसर स्थिर वर्ग होना चाहिए?
- 3. हडोप मैपराइडस: एक हैडोप जॉब क्लास में दो मैपर और रेड्यूसर को परिभाषित करना संभव है?
- 4. हैडोप सभी रेड्यूसर को रिकॉर्ड भेजता है
- 5. मैपर (हैडोप) में MATLAB कोड का उपयोग कैसे करें?
- 6. मैपर और रेड्यूसर कक्षाओं को स्थैतिक घोषित क्यों करें?
- 7. हाडोप, मैपर आउटपुट को कैसे कंप्रेस करें, लेकिन रेड्यूसर आउटपुट
- 8. सी में% 04X का अर्थ और जावा
- 9. जावा में .this और .class का अर्थ
- 10. हैडोप/एचडीएफएस फ़ाइल विभाजन के बारे में
- 11. हैडोप का मैपर ऑब्जेक्ट एकाधिक थ्रेड में साझा किया गया है?
- 12. हैडोप का उपयोग करके, क्या मेरे रेड्यूसर एक ही कुंजी के साथ सभी रिकॉर्ड प्राप्त करने की गारंटी रखते हैं?
- 13. जावा में .indexOf विधि के लिए एल्गोरिदम का विकल्प
- 14. हैबस/फाइल सिस्टम से हैडोप नामनोड कनेक्शन में ईओएफ अपवादों का क्या अर्थ है?
- 15. जावा में "सिंक्रनाइज़" का अर्थ क्या है?
- 16. जावा में क्लास का क्या अर्थ है?
- 17. हडोप मैपर
- 18. जावा में, नाएन का क्या अर्थ है?
- 19. जावा में @ चिह्न का अर्थ क्या है?
- 20. हैडोप पर जावा बनाम पायथन
- 21. जावा में चार शून्य (0) का अर्थ क्या है?
- 22. जावा में कार्डिनल दिशा एल्गोरिदम
- 23. हाडोप रेड्यूसर को
- 24. जावा में मार्कोव क्लस्टरिंग एल्गोरिदम
- 25. हैडोप
- 26. हैडोप और माईएसQL एकीकरण
- 27. जावा में Quicksort एल्गोरिदम प्रोग्राम
- 28. लेमन शब्दों में, जावा में 'स्थैतिक' का अर्थ क्या है?
- 29. ब्लॉक आकार के लिए हैडोप एफएस लुकअप?
- 30. जावा में 2 डी सरणी के लिए डिजस्ट्रा एल्गोरिदम
हाहा मेरे प्रसिद्ध के-साधन :) आपको किस विशिष्ट ज्ञान की आवश्यकता है? और हाँ इसे पुनरावृत्ति की आवश्यकता है। –
@ थॉमसजंगब्लूट: मैंने 'हडूप' द्वारा प्रदान किए गए 'वर्डकाउंट' उदाहरण को देखा। वह काफी आसान था। लेकिन 'के मतलब' में, मैं आगे बढ़ने में असमर्थ हूं। 'हडूप' में पुनरावृत्ति कैसे करें, 'मैपर' और 'रेड्यूसर' क्या होना चाहिए। चूंकि इसे 'कुंजी मान जोड़ी' की आवश्यकता होती है, तो 'कुंजी' क्या है और 'जोड़ी' क्या है? यदि आप मुझे विस्तार से समझा सकते हैं, तो मैं आपका आभारी रहूंगा। कृप्या। –
निश्चित रूप से, मैं वर्तमान में एक पैच पर काम कर रहा हूं, मैं आपको 10-20 मिनट में कुछ और जानकारी प्रदान करूंगा। –