2013-08-29 13 views
18

मुझे पता है कि इस तरह के रूप में इस के लिए इसी तरह के सवाल कर रहे हैं कि:स्पष्टीकरण बनाम RabbitMQ + अजवाइन

लेकिन मैं इस पूछ रहा हूँ क्योंकि मैं कुछ उपयोग-केस उदाहरणों द्वारा समर्थित एक और विशेष भेद की तलाश में हूं, कृपया।

के लिए बहुत लंबा करने के लिए

  • लो बहुत बड़ी हैं एक मशीन पर कार्य करें:

    तो, मैं एक अजगर उपयोगकर्ता के लिए जो कि या तो कार्यक्रमों बनाना चाहता है/दोनों हूँ , और उन्हें कई मशीनों पर संसाधित करें। मैं अजगर में (सिंगल-मशीन) मल्टीप्रोसेसिंग पैकेज से परिचित हूं, और मैं अभी मैप्रिडस स्टाइल कोड लिखता हूं। मुझे पता है कि मेरा कार्य, उदाहरण के लिए, आसानी से समानांतर है।

    मेरी हमेशा की तरह स्मार्ट सीएस सलाह-वालों से पूछ में, मैं मेरे सवाल phrased है के रूप में:

    "मैं एक काम लेना चाहते हैं, यह उप-कार्य का एक समूह है कि मशीनों का एक समूह पर एक साथ क्रियान्वित कर रहे हैं में विभाजित, तो उन परिणामों को समेकित किया जाना चाहिए और कुछ अन्य कार्यों के अनुसार निपटाया जा सकता है, जो कम हो सकता है, या उदाहरण के लिए, डेटाबेस में क्रमशः जोड़ने के लिए निर्देश हो सकते हैं। "

    मेरे उपयोग-मामले के इस खंड के मुताबिक, मुझे लगता है कि मैं हडोप या सेलेरी श्रमिकों + रब्बीएमक्यू ब्रोकर का एक सेट का उपयोग कर सकता हूं। हालांकि, जब मैं ऋषि सलाहकार से पूछता हूं, तो वे मुझे जवाब देते हैं जैसे कि मैं हडोप और सेलेरी को तुलनीय समाधान के रूप में देखने के लिए पूरी तरह पागल हूं। मैंने हडोप के बारे में काफी कुछ पढ़ा है, और सेलेरी के बारे में भी मुझे लगता है --- मुझे लगता है कि मुझे क्या लगता है पर मुझे बहुत अच्छा समझ है ---

    1. वे क्यों हैं इतना अलग माना जाता है, इतना अलग?
    2. यह देखते हुए कि उन्हें पूरी तरह से अलग तकनीकों के रूप में प्राप्त किया जाता है --- किस तरह से? उपयोग के मामले क्या हैं जो एक दूसरे से अलग हैं या किसी एक के लिए बेहतर हैं?
    3. दोनों के साथ क्या समस्याएं हल की जा सकती हैं, और एक या दूसरे का उपयोग करने के लिए विशेष रूप से कौन सा क्षेत्र विशेष रूप से मूर्ख होगा?
    4. मल्टीप्रोसेसिंग जैसे पूल.मैप() - एकाधिक मशीनों की कार्यक्षमता प्राप्त करने के लिए संभवतः बेहतर, सरल तरीके हैं? आइए कल्पना करें कि मेरी समस्या भंडारण द्वारा बाधित नहीं है, लेकिन सीपीयू और रैम द्वारा गणना के लिए आवश्यक है, इसलिए श्रमिकों से मिलने वाले परिणामों को पकड़ने के लिए बहुत कम जगह होने में कोई समस्या नहीं है। (यानी, मैं सिमुलेशन की तरह कुछ कर रहा हूं जहां मुझे डेटाबेस से मूल्य से बीजित छोटी मशीनों पर बहुत सी चीजें उत्पन्न करने की ज़रूरत है, लेकिन ये स्रोत मशीन/डेटाबेस पर लौटने से पहले कम हो जाते हैं।)

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

  • उत्तर

    20
    1. वे पाते हैं कि दोनों समस्या यह है कि आप का वर्णन का समाधान (मानचित्र-कम) कर सकते हैं में एक ही हैं।वे अलग हैं कि हैडोप पूरी तरह से केवल उस उपयोगकेस को हल करने के लिए तैयार है और सेली/खरगोश एमक्यू संदेश पासिंग का उपयोग करके विभिन्न नोड्स पर कार्य निष्पादन की सुविधा के लिए बनाया गया है। अजवाइन विभिन्न उपयोगकाजों का भी समर्थन करता है।

    2. हैडोप नक्शा को हल कर रहा है-एक बड़ी और विशेष फाइल सिस्टम है जिससे मैपर अपना डेटा लेता है, इसे मानचित्र नोड्स के समूह में भेजता है और इसे उस फाइल सिस्टम में कम कर देता है। इसका लाभ यह है कि यह करने में वास्तव में तेज़ है। डाउनसाइड्स यह है कि यह केवल टेक्स्ट आधारित डेटा इनपुट पर काम करता है, पायथन वास्तव में समर्थित नहीं है और यदि आप अलग-अलग उपयोगकेस (थोड़ा) नहीं कर सकते हैं। सेलेरी एक संदेश आधारित कार्य निष्पादक है। इसमें आप कार्यों को परिभाषित करते हैं और वर्कफ़्लो में उन्हें एक साथ समूहित करते हैं (जो map-reduce वर्कफ़्लो हो सकता है)। इसके फायदे यह है कि यह पाइथन आधारित है, कि आप एक कस्टम वर्कफ़्लो में कार्यों को एक साथ जोड़ सकते हैं। नुकसान एकल ब्रोकर/परिणाम बैकएंड और इसके सेटअप समय पर निर्भरता है।

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

    4. हाँ! ऐसी कंपनियों में से एक नई परियोजना है जो मैसेजिंग प्रोटोकॉल एएमक्यूपी बनाने में मदद करती है जिसका प्रयोग खरगोश एमक्यू (और अन्य) द्वारा किया जाता है। इसे ZeroMQ कहा जाता है और यह सेलेरी की तुलना में अबास्ट्रक्शन में अजीब स्तर पर जाकर अगले स्तर पर वितरित संदेश/निष्पादन लेता है। यह सॉकेट को परिभाषित करता है कि आप नोड्स के बीच मैसेजिंग लिंक बनाने के विभिन्न तरीकों से एक साथ जोड़ सकते हैं। आप इन संदेशों के साथ कुछ भी करना चाहते हैं जो आप लिखने के लिए हैं। हालांकि यह ऐसा लगता है कि "सॉकेट के चारों ओर एक पतला रैपर कितना अच्छा है" यह वास्तव में अमूर्तता के दाहिने स्तर पर है। अभी हमारी कंपनी में हम अपने सभी अजवाइन संदेश को फैक्टरिंग कर रहे हैं और इसे ज़ीरोएमक्यू के साथ पुनर्निर्माण कर रहे हैं। हमने पाया कि सेलेरी की इस बात पर भी बहुत राय है कि कार्यों को कैसे निष्पादित किया जाना चाहिए और सामान्य रूप से सेटअप/कॉन्फ़िगरेशन दर्द है। साथ ही बीच में ब्रोकर को सभी ट्रैफिक को संभालना पड़ता है, जो बाधाओं में से एक था।

    फिर से शुरू:

    • गणना की "" एक पुस्तक में साथ संभव के रूप में कम प्रोग्रामिंग और सेटअप/config बहुत समय के रूप में घटनाओं: Hadoop
    • परमाणु कार्य बनाएँ और करने में सक्षम हो उन्हें प्रोग्रामिंग और बहुत सारे सेटअप/कॉन्फ़िगरेशन समय के साथ मिलकर काम नहीं करना है: सेलेरी
    • अपने संदेशों के साथ क्या करना है और लगभग कोई सेटअप/कॉन्फ़िगर समय के साथ प्रोग्राम कैसे करें, इस पर पूर्ण नियंत्रण रखें: ZeroMQ
    • कोई सेटअप/कॉन्फ़िगरेशन समय के साथ दर्द है: सॉकेट
    +0

    मैं इसकी जांच कर रहा हूं, और मेरा मानना ​​है कि आप सही हैं, और यह बहुत उपयोगी था। ज़ीरोएमक्यू अब तक काफी अद्भुत है। यह वितरित कंप्यूटिंग और उचित संदेश रूटिंग, नेटवर्क प्रोग्रामिंग के बीच एक अजीब छिद्रपूर्ण जगह है। अभी भी इसे हल करने की कोशिश कर रहा है। – Mittenchops

    +0

    मुझे ज़ीरोएमक्यू पसंद है। धन्यवाद! – Mittenchops

    +1

    @Mittenchops आपको जीतने के लिए खुशी हुई। प्रारंभिक बाधा पर आने में कुछ समय लगता है, लेकिन इसके लायक है। – RickyA

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