2012-10-01 28 views
18

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

इसके अलावा, Django हडोप के साथ एकीकृत कर सकते हैं? आम तौर पर, कैसे वेब ढांचे (एएसपी.नेट, पीएचपी, जावा (जेएसपी, जेएसएफ, आदि)) हडोप के साथ खुद को एकीकृत करते हैं?

मैं थोड़ा Hadoop बनाम आरडीबीएमएस के साथ उलझन में हूँ और मैं किसी भी स्पष्टीकरण की सराहना करेंगे। (क्षमा करें, मैंने कई बार प्रलेखन पढ़ा है, लेकिन शायद अंग्रेजी में ज्ञान की कमी के कारण, मुझे लगता है कि दस्तावेज ज्यादातर समय में थोड़ा उलझन में है)

+0

मैंने हडोप का उपयोग नहीं किया है। मैंने बस सामने वाले पृष्ठ को पढ़ा। मुझे लगता है कि यह सिर्फ एक फाइल सिस्टम समाधान है। यह एक आरडीबीएमएस को प्रतिस्थापित नहीं करेगा, और एक के साथ अच्छी तरह से काम नहीं कर सकता है। मुझे लगता है कि कई मशीनों में फैले लॉजिकल ड्राइव पर डेटाबेस डालने से गंभीर प्रदर्शन समस्याएं हो सकती हैं; यदि आप इसे आजमाने के लिए जा रहे हैं तो अधिक शोध की गारंटी देता है। – dokkaebi

+0

हैडोप सादे बड़ी फाइलों पर काम करता है और इसमें कोई अनुक्रमण नहीं है। यदि आप डेटा को यादृच्छिक पहुंच चाहते हैं तो आपको HBase की आवश्यकता है। वे दोनों एचडीएफएस पर निर्माण करते हैं, जो क्लस्टर में बड़ी फाइलों का प्रबंधन करता है। मैं बाद में एक बेहतर स्पष्टीकरण दूंगा :-) – romedius

+0

@romedius कृपया, मैं इसके लिए इंतजार नहीं कर सकता :)। अब तक मेरे द्वारा किए गए सभी रीडिंग्स मुझे और अधिक भ्रमित कर देते हैं। –

उत्तर

21

हैडोप क्या है?

कल्पना कीजिए निम्नलिखित challange: आप डेटा का एक बहुत है, और बहुत से मैं कम से कम टेराबाइट पर मतलब है। आप इस डेटा को बदलना चाहते हैं या कुछ सूचनाएं निकालना चाहते हैं और इसे एक प्रारूप में संसाधित करना चाहते हैं जो अनुक्रमित, संपीड़ित या "पच गया" है ताकि आप इसके साथ काम कर सकें।

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

यदि आप हडोप पारिस्थितिकी तंत्र पर पहली बार देखते हैं तो आपको 3 बड़े शब्द मिलेंगे: एचडीएफएस (हैडोप फाइल सिस्टम), हैडोप स्वयं (मैपरेडस के साथ) और एचबीएएस ("डेटाबेस" कभी-कभी कॉलम स्टोर, जो बिल्कुल ठीक नहीं है)

एचडीएफएस हैडोप और एचबेस दोनों द्वारा उपयोग की जाने वाली फाइल सिस्टम है। यह आपके मेजबान पर नियमित फाइल सिस्टम के शीर्ष पर एक अतिरिक्त परत है। एचडीएफएस अपलोड की गई फ़ाइलों को टुकड़ों (आमतौर पर 64 एमबी) में स्लाइस करता है और उन्हें क्लस्टर में उपलब्ध रखता है और उनकी प्रतिकृति का ख्याल रखता है।

Hadoop निष्पादित करने के लिए एक कार्य हो जाता है है, यह HDFS, वांछित आउटपुट पथ, एक मैपर और एक प्रसारण क्लास पर इनपुट फ़ाइलों का पथ हो जाता है। मैपर और रेड्यूसर आमतौर पर एक जेएआर फ़ाइल में पारित जावा क्लास होता है। (लेकिन Hadoop Streaming के साथ आप अपने इच्छित कॉमंडलाइन टूल का उपयोग कर सकते हैं)। मैपर को प्रत्येक प्रविष्टि को संसाधित करने के लिए कहा जाता है (आमतौर पर लाइन द्वारा, उदाहरण के लिए: इनपुट लाइनों में लाइन में एक खराब एफ * शब्द "होता है, तो वापसी 1), आउटपुट को रेड्यूसर में पास किया जाता है, जो एकल आउटपुट को वांछित में विलीन करता है अन्य प्रारूप (उदाहरण: संख्याओं के अतिरिक्त)। यह "बुरा शब्द" काउंटर पाने का एक आसान तरीका है।

अच्छी बात: मैपिंग की गणना नोड पर की जाती है: आप लाइनों को रैखिक रूप से संसाधित करते हैं और आप नेटवर्क पर केवल अर्ध-पचाने वाले (आमतौर पर छोटे) डेटा को रेड्यूसर में ले जाते हैं।

और यदि नोड्स में से एक मर जाता है: एक ही डेटा वाला एक और है।

HBase फ़ाइलों के वितरित भंडारण का लाभ लेता है और उसके टेबल, क्लस्टर पर मात्रा में splitted संग्रहीत करता है। एचबीएएस, हैडोप के विपरीत, डेटा तक यादृच्छिक पहुंच देता है।

जैसा कि आप देखते हैं कि एचबीएएस और हाडोप आरडीएमबीएस के लिए काफी अलग हैं। इसके अलावा एचबीएएस में आरडीबीएमएस की कई अवधारणाओं की कमी है। ट्रिगर्स, तैयारस्टेटमेंट्स, विदेशी कुंजी इत्यादि के साथ मॉडलिंग डेटा ऐसा नहीं है, जिसे एचबीएएस को करने के लिए सोचा गया था (मुझे इस बारे में 100% यकीन नहीं है, इसलिए मुझे सही करें ;-))

क्या डैंजो हडोप के साथ एकीकृत हो सकता है?

जावा के लिए यह आसान है: Hadoop जावा में लिखा है और सभी एपीआई वहाँ का उपयोग करने के लिए तैयार हैं,।

पाइथन/Django के लिए मुझे नहीं पता (अभी तक), लेकिन मुझे यकीन है कि आप अंतिम उपाय के रूप में हैडोप स्ट्रीमिंग/जैथन के साथ कुछ कर सकते हैं। मुझे निम्न मिला है: Hadoopy और Python in Mappers and Reducers

+0

पीएस .: मैं इसके बाद कुछ लिंक जोड़ूंगा :-) – romedius

+0

बहुत बढ़िया स्पष्टीकरण। तो, जिज्ञासा से बाहर, एचबीएस आरडीएमएस के समान ही अधिक है? (मेरा मतलब है सीखना वक्र, परिचितता, आदि) –

+2

एचबीएएस को डेटाबेस (इसके नोएसक्यूएल! याय!) माना जा सकता है, हैडोप स्वयं वितरित फाइल सिस्टम के शीर्ष पर एक राक्षसी डेटा क्रंचिंग इंजन की तरह है। कुछ लोग डेटा वेयरहाउसिंग उपयोग मामलों के लिए हबेस और हबेस का दुरुपयोग करते हैं। यदि यह सही दृष्टिकोण है तो एक और चर्चा का हिस्सा है। विस्तृत स्पष्टीकरण के लिए – romedius

1

बेसिक (!) Hadoop [हटाया लिंक]

साथ Django एकीकरण के उदाहरण मैं काम के निष्पादन के लिए Oozie REST API, और काम के परिणाम हथियाने (HDFS की वजह से 'वितरित प्रकृति) के लिए' Hadoop बिल्ली 'का उपयोग करें। एचडीएफएस डेटा प्राप्त करने के लिए हूप जैसे कुछ का उपयोग करना बेहतर तरीका है। वैसे भी, यह एक साधारण समाधान नहीं है।

पीएस मैंने इस कोड को दोबारा दोहराया है और इसे https://github.com/Obie-Wan/django_hadoop में रखा है। अब यह एक अलग django ऐप है।

+0

आप इसका उपयोग कैसे करते हैं? क्या आप कुछ डॉक्टर जोड़ सकते हैं? – lizzie

+0

रीडमे अपडेट किया गया। Github पर अपने प्रश्नों के साथ एक समस्या जोड़ने के लिए स्वतंत्र महसूस करें। सौभाग्य। –

3

डीजेंगो अधिकांश आरडीएमएस से जुड़ सकता है, ताकि आप इसे हडोप आधारित समाधान के साथ उपयोग कर सकें।

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

पायथन के पास एक बहाव आधारित बाध्यकारी, खुशहाल है, जो आपको हब्स से पूछने देता है।