2012-12-11 17 views
6

मैं हाइव पर काम करता हूं और मैं इसके लिए नया हूं। मुझे हाइव क्वेरी में प्रदर्शन के संबंध में कुछ मुद्दों का सामना करना पड़ रहा है।हाइव प्रदर्शन

  1. मेरा काम के लिए आवंटित मानचित्रकारों की संख्या बहुत कम है, भले ही उपलब्ध मानचित्रकारों के सैकड़ों रहे हैं। मैंने mapred.map.tasks=200 सेटिंग करने का प्रयास किया है। लेकिन इसमें केवल 20 से 30 मैपर लगते हैं। मैं समझता हूं, मैपर्स की संख्या inputsplit पर निर्भर करती है। क्या मैपर बढ़ाने के लिए कोई अन्य विकल्प है? यदि नहीं तो पैरामीटर (mapred.map.tasks) क्यों पेश किया गया है?

  2. वहाँ किसी भी संसाधन मैं कहाँ छत्ता प्रश्नों सहसंबंधी करने के लिए नक्शे-कम करने के लिए रोजगार के अवसर, यानी जहां क्वेरी के विभिन्न हिस्से निष्पादित किया जाता है समझ सकता है?

+1

कैसे अपने इनपुट डेटा आयोजित किया जाता है? ऐसी कुछ स्थितियां हैं जहां हाइव इनपुट को मुक्त रूप से (एन आदर्शीकृत) मैपर्स में विभाजित नहीं कर सकता है। उदाहरण के लिए यदि आप .gz फ़ाइलों को लोड कर रहे हैं, तो मेरा मानना ​​है कि मानक व्यवहार 1 .gz फ़ाइल -> 1 मानचित्र है, भले ही नोड्स की संख्या उपलब्ध हो। –

+0

मैं एक हाइव टेबल के खिलाफ पूछताछ कर रहा हूं। लेकिन तालिका लगभग 10 टीबी आकार बहुत बड़ी है .. – kabalas

+0

तालिका का आकार कोई फर्क नहीं पड़ता, @MikeRepass का संदर्भ डेटा फ़ाइलों का लेआउट क्या है। क्या आपकी तालिका एक संकुचित फाइल है या यह कई फाइलों से बना है। कुछ संपीड़न और फ़ाइल प्रारूप संपीड़न का समर्थन करते हैं। –

उत्तर

2

मानचित्र कार्यों को सेट करने के बारे में अधिक जानकारी के लिए, इस लिंक को देखें: http://wiki.apache.org/hadoop/HowManyMapsAndReduces। असल में, mapred.map.tasks सिर्फ एक संकेत है; यह वास्तव में कुछ भी वास्तव में नियंत्रित नहीं करता है।

यह देखने के लिए कि हाइव क्वेरी कैसे निष्पादित की जाती हैं, बस explain के साथ अपनी क्वेरी का प्रस्ताव लें। उदाहरण के लिए: explain select foo from bar;। यदि आपको और भी जानकारी चाहिए, तो explain extended भी है।

0

मैपर्स (अधिक विभाजन) की संख्या बढ़ाने के लिए आप 'mapreduce.input.fileinputformat.split.maxsize' को कम कर सकते हैं।

1

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

हाइव के प्रदर्शन का अनुकूलन करने के लिए:

  • ट्यूनिंग मानचित्रकारों और reducers अपने हाइव अनुरोध द्वारा इस्तेमाल किया की संख्या; यह प्रत्येक नक्शाकार mapreduce.input.fileinputformat.split.maxsize के लिए इनपुट आकार ट्यूनिंग द्वारा किया जा सकता है, और प्रत्येक कम करने के लिए इनपुट का आकार:

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

  • अनुकूलन मिलती है, परिवर्तित कॉलम है कि अक्सर हैं पर नक्शा-मिलती है, यदि तालिका में से एक छोटी सी मेज (यदि संभव हो) है ... अपनी मेज (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+JoinOptimization)

  • विभाजन में शामिल परिस्थितियों में उपयोग किया जाता है (कहां)।
    उदाहरण के लिए अनुरोध कर रहे हैं, तो अक्सर
    SELECT * from myTable WHERE someColumn = 'someValue'
    यह स्तंभ 'someColumn'
    इस पर अपनी मेज विभाजन के बजाय पूरे तालिका फ़ाइलों की खोज का दूँगी आपकी क्वेरी खोज सिर्फ विभाजन फ़ाइलों someColumn = SomePartition सिफारिश की है।

  • मध्यवर्ती परिणामों को संपीड़ित करने से कुछ मामलों में प्रदर्शन बढ़ सकता है (आपके हार्डवेयर कॉन्फ़िगरेशन, नेटवर्क और सीपीयू/मेमोरी के आधार पर)।तेज़ (as in here) का उपयोग कर उदाहरण के लिए, hive.intermediate.compression.codec

  • का चयन सही संपीड़न कोडेक:

    SET hive.exec.compress.output=true; 
    SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; 
    SET mapred.output.compression.type=BLOCK; 
    

नहीं प्रश्न के समय में उपलब्ध किया गया: यह संपत्ति की स्थापना द्वारा किया जा सकता है

  • टेक्स्ट फ़ाइल का उपयोग करने के बजाय अपनी तालिका को स्टोर करने के लिए अनुकूलित फ़ाइल स्वरूप का उपयोग करना ई, या अनुक्रम फ़ाइल, आप ओआरसी इस्तेमाल कर सकते हैं (छत्ता 0.11 +) उदाहरण के लिए (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC)

  • पर आपके प्रश्नों पर अमल के लिए एक और इंजन का उपयोग करना, बजाय MapReduce की है, तो आप तेज़ इस्तेमाल कर सकते हैं या यहां तक ​​कि tez for example का उपयोग Spark.To:

    <property> 
        <name>hive.execution.engine</name> 
        <value>tez</value> 
    </property> 
    

आगे अनुकूलन के लिए आप उल्लेख कर सकते here

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