2013-05-17 8 views
5

मैं स्क्वाप संस्करण 1.4.2 और ओरेकल डेटाबेस का उपयोग कर रहा हूं।स्क्वाप आयात और निर्यात चलाने पर मैपर्स की इष्टतम संख्या कैसे प्राप्त करें?

Sqoop कमांड चलाते समय। इस तरह उदाहरण के लिए: - कितने समानांतर कार्य हम Sqoop चलाना चाहते हैं (यह भी वे डाटाबेस एक ही समय में पहुँचने के किया जा सकता है)

./sqoop import        \ 
    --fs <name node>       \ 
    --jt <job tracker>      \ 
    --connect <JDBC string>     \ 
    --username <user> --password <password> \ 
    --table <table> --split-by <cool column> \ 
    --target-dir <where>      \ 
    --verbose --m 2 

हम --m निर्दिष्ट कर सकते हैं। एक ही विकल्प> ./sqoop निर्यात < ... के लिए उपलब्ध है

वहाँ कुछ अनुमानी अनुमान लगाना कार्य का इष्टतम संख्या का उपयोग करने के क्या है में मदद मिलेगी जो (शायद डेटा के आकार के आधार पर) है?

धन्यवाद!

+2

नहीं, यह आपके डेटाबेस सर्वर के CPUs/कोर की संख्या पर निर्भर करता है, डिस्क की मात्रा प्रत्येक कार्य की आवश्यकता होगी, उन डिस्क की गति, रैम में प्रत्येक कार्य का कितना प्रदर्शन किया जा रहा है, राशि रैम की, जो आप राम में स्टोर नहीं कर सकते हैं, आपके द्वारा उपयोग की जाने वाली फाइल सिस्टम, डेटाबेस के विपरीत ओएस को असाइन की गई रैम की मात्रा, संभावित रूप से आपके स्विच और नेटवर्क केबल्स का आकार और डेटाबेस और/या सर्वर के खिलाफ अतिरिक्त प्रक्रियाओं की संख्या चल रही है और कैसे उपर्युक्त कारक उन्हें प्रभावित करते हैं, आदि। इसका परीक्षण करें। – Ben

+2

@Ben - मैं इसे उत्तर के रूप में सबमिट करूंगा –

उत्तर

0

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

यदि आपके पास कोई बड़ा डेटासेट नहीं है, तो याद रखें कि आपका आउटपुट --m फ़ाइलों की संख्या का मूल्य होगा, इसलिए यदि आप 100 पंक्ति तालिका निर्यात कर रहे हैं, तो आप --m को सेट करना चाहेंगे 1 एक फ़ाइल में स्थानांतरित सभी डेटा रखने के लिए।

+0

यदि आप डाउनवोट करने जा रहे हैं, तो कृपया मुझे रचनात्मक आलोचना छोड़ दें ताकि मैं अपना जवाब सुधार सकूं। – Engineiro

+0

Thats विभिन्न प्रश्न का उत्तर। मैंने इसे कम नहीं किया। लेकिन एसक्यूप के साथ समस्या यह है कि यह प्रत्येक मैपर द्वारा डबेज मार रहा है। तो अगर मेरे पास 30 मशीनें हैं, तो प्रत्येक 2 मैपर प्रतिनिधि बैठे हैं और मैं उपयोग करता हूं -एम 60 डेटाबेस इसके साथ बहुत नाखुश होगा :) – Bohdan

+0

आप इसे 60 तक सेट नहीं करेंगे। आप इसे 2 पर सेट करेंगे ... इस सेटिंग के बाद से आपके क्लस्टर में प्रत्येक मशीन पर लागू होगा। तो प्रत्येक मशीन तैनात किए गए कुल 60 मैपर के लिए दो मैपर का उपयोग करेगी, यदि एसक्यूओपी एपीआई इसे सुझाव या हार्ड सेटिंग के रूप में लेता है। – Engineiro

4

यह ओ'रेली मीडिया द्वारा अपाचे स्क्वाप कुकबुक से लिया गया है, और यह सबसे तार्किक उत्तर प्रतीत होता है।

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

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