हाइव ट्यूटोरियल - हाइव आर्किटेक्चर और नासा केस स्टडी



यह हाइव ट्यूटोरियल ब्लॉग आपको हाइव आर्किटेक्चर और हाइव डेटा मॉडल का गहन ज्ञान देता है। यह अपाचे हाइव पर नासा के केस-स्टडी के बारे में भी बताता है।

अपाचे हाइव ट्यूटोरियल: परिचय

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





अपाचे हाइव ट्यूटोरियल: हाइव क्या है?

अपाचे हाइव एक डेटा वेयरहाउस सिस्टम है जिसे Hadoop के शीर्ष पर बनाया गया है और इसका उपयोग संरचित और अर्ध-संरचित डेटा के विश्लेषण के लिए किया जाता है।Hive, Hadoop MapReduce की जटिलता का सार करता है। मूल रूप से, यह डेटा पर प्रोजेक्ट संरचना और HQL (हाइव क्वेरी भाषा) में लिखे गए प्रश्नों को निष्पादित करने के लिए एक तंत्र प्रदान करता है जो SQL बयानों के समान हैं। आंतरिक रूप से, ये प्रश्न या एचक्यूएल हाइव कंपाइलर द्वारा नौकरियों को कम करने के लिए नक्शे में परिवर्तित हो जाते हैं। इसलिए, आपको Hadoop का उपयोग करके अपने डेटा को संसाधित करने के लिए जटिल MapReduce प्रोग्राम लिखने के बारे में चिंता करने की आवश्यकता नहीं है। यह उन उपयोगकर्ताओं के लिए लक्षित है जो SQL के साथ सहज हैं। अपाचे हाइव डेटा डेफिनिशन लैंग्वेज (डीडीएल), डेटा मैनिपुलेशन लैंग्वेज (डीएमएल) और यूजर डिफाइंड फंक्शंस (यूआईएफएफ) को सपोर्ट करता है।

शुरुआती के लिए हाइव ट्यूटोरियल | गहराई से समझ लेना | Edureka



SQL + Hadoop MapReduce = HiveQL

अपाचे हाइव ट्यूटोरियल: हाइव की कहानी - फेसबुक से अपाचे तक

फेसबुक का उपयोग मामला - हाइव ट्यूटोरियल - एडुर्काअंजीर : हाइव ट्यूटोरियल - फेसबुक का उपयोग मामला

फेसबुक पर चुनौतियां: डेटा की घातीय वृद्धि

2008 से पहले, फेसबुक में सभी डेटा प्रोसेसिंग इन्फ्रास्ट्रक्चर वाणिज्यिक RDBMS के आधार पर एक डेटा वेयरहाउस के आसपास बनाया गया था। ये इन्फ्रास्ट्रक्चर उस समय फेसबुक की जरूरतों को पूरा करने में सक्षम थे। लेकिन, जैसे-जैसे डेटा बहुत तेज़ी से बढ़ने लगा, इस विशाल डेटासेट को प्रबंधित और संसाधित करना एक बड़ी चुनौती बन गया। एक फेसबुक लेख के अनुसार, 2007 में 15 टीबी डेटा सेट से डेटा को 2009 में 2 पीबी डेटा तक बढ़ाया गया। इसके अलावा, कई फेसबुक उत्पादों में डेटा का विश्लेषण शामिल है जैसे ऑडियंस इनसाइट्स, फेसबुक लेक्सिकन, फेसबुक विज्ञापन, आदि। इस समस्या का सामना करने के लिए एक स्केलेबल और किफायती समाधान की आवश्यकता थी, और इसलिए Hadoop ढांचे का उपयोग करना शुरू कर दिया।



डेमोक्रेटाइज़िंग Hadoop - MapReduce

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

इसलिए, अधिकांश विश्लेषणात्मक आवश्यकताओं के लिए SQL की क्षमता और Hadoop की मापनीयता ने जन्म दिया अपाचे हाइव जो HDFS में मौजूद डेटा पर एसक्यूएल जैसे प्रश्नों को करने की अनुमति देता है। बाद में, हाइव परियोजना को अगस्त 2008 में फेसबुक द्वारा खोला गया था और आज अपाचे हाइव के रूप में स्वतंत्र रूप से उपलब्ध है।

अब, हम हाइव की विशेषताओं या लाभों को देखते हैं जो इसे इतना लोकप्रिय बनाता है।

अपाचे हाइव ट्यूटोरियल: हाइव के लाभ

  • ऐसे लोगों के लिए उपयोगी जो प्रोग्रामिंग बैकग्राउंड से नहीं हैं क्योंकि यह जटिल मैपरेड प्रोग्राम लिखने की आवश्यकता को समाप्त करता है।
  • अत्यधिक तथा मापनीय सिस्टम के प्रदर्शन को प्रभावित किए बिना बढ़ती मात्रा और डेटा की विविधता के साथ सामना करने के लिए।
  • यह एक कुशल ईटीएल (एक्सट्रैक्ट, ट्रांसफॉर्म, लोड) टूल के रूप में है।
  • हाइव जावा, पीएचपी, पायथन, सी ++ या रूबी में लिखे किसी भी क्लाइंट एप्लिकेशन का समर्थन करता है थ्रिफ्ट सर्वर । (आप DB2 जैसे डेटाबेस तक पहुँचने के लिए SQL के साथ एम्बेडेड इन क्लाइंट साइड भाषाओं का उपयोग कर सकते हैं)।
  • जैसा कि हाइव की मेटाडेटा जानकारी को RDBMS में संग्रहीत किया जाता है, यह क्वेरी निष्पादन के दौरान शब्दार्थ जांच करने के लिए समय को काफी कम कर देता है।

अपाचे हाइव ट्यूटोरियल: अपाचे हाइव का उपयोग कहां करें?

Apache Hive दोनों दुनिया यानि SQL डेटाबेस सिस्टम और का लाभ उठाता है ढांचा। इसलिए, यह कंपनियों की एक विशाल भीड़ द्वारा उपयोग किया जाता है। यह ज्यादातर डेटा वेयरहाउसिंग के लिए उपयोग किया जाता है जहां आप एनालिटिक्स और डेटा माइनिंग कर सकते हैं जिसमें वास्तविक समय प्रसंस्करण की आवश्यकता नहीं होती है। कुछ क्षेत्र जहां आप अपाचे हाइव का उपयोग कर सकते हैं, वे इस प्रकार हैं:

  • डेटा वेयरहाउसिंग
  • तदर्थ विश्लेषण

जैसा कि कहा जाता है, आप केवल एक हाथ से ताली नहीं बजा सकते हैं यानी आप एक उपकरण के साथ हर समस्या को हल नहीं कर सकते। इसलिए, आप कई अन्य डोमेन में इसका उपयोग करने के लिए अन्य उपकरणों के साथ हाइव को युगल कर सकते हैं। उदाहरण के लिए, अपाचे हाइव के साथ झांकी का उपयोग डेटा विज़ुअलाइज़ेशन के लिए किया जा सकता है, हाइव के साथ अपाचे टीज़ एकीकरण आपको वास्तविक समय प्रसंस्करण क्षमता प्रदान करेगा, आदि।
इस अपाचे हाइव ट्यूटोरियल ब्लॉग में आगे बढ़ते हुए, हम नासा के एक केस स्टडी पर एक नजर डालते हैं, जहां आपको पता चलेगा कि क्लाइव मॉडल्स के मूल्यांकन के दौरान नासा के वैज्ञानिकों को किस तरह की समस्या का सामना करना पड़ा।

हाइव ट्यूटोरियल: नासा केस स्टडी

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

RCMES (क्षेत्रीय जलवायु मॉडल मूल्यांकन प्रणाली) के दो घटक हैं:

  • RCMED (क्षेत्रीय जलवायु मॉडल मूल्यांकन डेटाबेस):

यह एक स्केलेबल क्लाउड डेटाबेस है जो रिमोट सेंसिंग डेटा और रेनैलिसिस डेटा को लोड करता है जो अपाचे ओओडीटी एक्सट्रैक्टर्स, अपाचे टीका आदि जैसे एक्सट्रैक्टर्स का उपयोग करके जलवायु से संबंधित है। अंत में, यह डेटा को डेटा पॉइंट मॉडल के रूप में बदल देता है जो कि फॉर्म (अक्षांश) का है। , देशांतर, समय, मूल्य, ऊंचाई) और इसे माय SQL डेटाबेस में संग्रहीत करता है। ग्राहक RCMED में मौजूद डेटा को स्पेस / टाइम क्वेश्चन कर रिवाइव कर सकता है। इस तरह के प्रश्नों का वर्णन अब हमारे लिए प्रासंगिक नहीं है।

  • RCMET (क्षेत्रीय जलवायु मॉडल मूल्यांकन टूलकिट):

यह उपयोगकर्ता को विभिन्न प्रकार के विश्लेषण और मूल्यांकन करने के लिए कुछ अन्य स्रोतों से प्राप्त जलवायु मॉडल आउटपुट डेटा के साथ RCMED में मौजूद संदर्भ डेटा की तुलना करने की क्षमता प्रदान करता है। आप RCMES की वास्तुकला को समझने के लिए नीचे दी गई छवि का उल्लेख कर सकते हैं।

जलवायु मॉडल मूल्यांकन के लिए आवश्यक विभिन्न मापदंडों के अनुसार, RCMED में संदर्भ डेटा उपग्रह-आधारित रिमोट सेंसिंग से आता है। उदाहरण के लिए - AIRS (एटमॉस्फेरिक इन्फ्रारेड साउंडर) सर्फेस एयर टेम्परेचर, टेम्परेचर और जियोफिटेंशियल, TRMM (ट्रॉपिकल रेनफॉल मेजरमेंट मिशन) जैसे पैरामीटर प्रदान करता है, जो मासिक वर्षा आदि प्रदान करता है।

MySQL डाटाबेस सिस्टम के उपयोग से NASA को होने वाली समस्याएं:

  • फार्म के 6 बिलियन ट्यूपल्स (अक्षांश, देशांतर, समय, डेटा बिंदु मान, ऊंचाई) के साथ MySQL डेटाबेस को लोड करने के बाद, सिस्टम ऊपर की छवि में दिखाए गए अनुसार क्रैश हो गया।
  • पूरी तालिका को छोटे उप-भागों में विभाजित करने के बाद भी, सिस्टम ने डेटा को संसाधित करते समय भारी ओवरहेड उत्पन्न किया।

इसलिए, उन्हें एक स्केलेबल समाधान की आवश्यकता थी जो SQL के साथ डेटा की इस भारी मात्रा को क्वेरी क्षमता की तरह संग्रहित और संसाधित कर सके। अंत में, उन्होंने ऊपर बताई गई समस्याओं को दूर करने के लिए अपाचे हाइव का उपयोग करने का निर्णय लिया।

कैसे अपाचे हाइव समस्या को हल कर सकता है?

अब, आइए देखते हैं, नासा की जेपीएल टीम को अपनी समाधान रणनीति में अभिन्न हाइव के रूप में शामिल करने के लिए नासा की जेपीएल टीम को आश्वस्त करने वाली वे विशेषताएं क्या हैं:

  • चूंकि, अपाचे हाइव हैडोप के शीर्ष पर चलता है, यह स्केलेबल है और एक वितरित और समानांतर फैशन में डेटा को संसाधित कर सकता है।
  • यह हाइव क्वेरी भाषा प्रदान करता है जो एसक्यूएल के समान है और इसलिए सीखना आसान है।

छत्ता की तैनाती:

निम्नलिखित छवि अपाचे हाइव एकीकरण के साथ RCMES वास्तुकार बताती है:

अंजीर : हाइव ट्यूटोरियल - Apache Hive के साथ RCMES आर्किटेक्चर

उपरोक्त छवि RCMES में अपाचे हाइव की तैनाती को दर्शाती है। अपाचे हाइव की तैनाती करते समय नासा टीम द्वारा निम्नलिखित कदम उठाए गए थे:

  • उन्होंने क्लाइव और अपाचे हडोप का उपयोग करके हाइव स्थापित किया जैसा कि ऊपर की छवि में दिखाया गया है।
  • उन्होंने MySQL डेटाबेस से Hive में डेटा निगलना के लिए Apache Sqoop का उपयोग किया।
  • अपाचे OODT रैपर को हाइव पर पूछताछ करने और डेटा को RCMET में वापस लाने के लिए लागू किया गया था।

हाइव के साथ प्रारंभिक बेंचमार्किंग अवलोकन:

  • प्रारंभ में उन्होंने एक ही तालिका में 2.5 बिलियन डेटा बिंदुओं को लोड किया और एक गणना क्वेरी का प्रदर्शन किया। उदाहरण के लिए, छत्ता> dataPoint से काउंट (datapoint_id) का चयन करें। सभी रिकॉर्ड्स को पूरा करने में 5-6 मिनट लगे (पूरे 6.8 बिलियन रिकॉर्ड्स के लिए 15-17 मिनट)।
  • कम चरण तेज था, लेकिन नक्शा चरण में कुल प्रसंस्करण समय का 95% लिया गया। वे छह का उपयोग कर रहे थे ( 4x क्वाड-कोर ) सिस्टम के साथ 24 जीबी रैम (लगभग) प्रत्येक प्रणाली में।
  • अधिक मशीनों को जोड़ने के बाद भी, एचडीएफएस ब्लॉक आकार (64 एमबी, 128 एमबी, 256 एमबी) को बदलने और कई अन्य कॉन्फ़िगरेशन वेरिएंट (आईओ) को बदलकरक्रमबद्ध करेंकारक, मैंक्रमबद्ध करेंmb), उन्हें गिनती पूरी करने के लिए समय कम करने में ज्यादा सफलता नहीं मिली।

हाइव समुदाय के सदस्यों से इनपुट:

अंत में, हाइव समुदाय के सदस्य बचाव में आए और अपने वर्तमान हाइव कार्यान्वयन के साथ मुद्दों को हल करने के लिए विभिन्न अंतर्दृष्टि प्रदान कीं:

  • उन्होंने उल्लेख किया कि एचडीएफएस पढ़ने की गति लगभग है 60 एमबी / एस इसकी तुलना में 1 जीबी / एस एक स्थानीय डिस्क के मामले में, नेटवर्क क्षमता और NameNode पर कार्यभार के आधार पर।
  • सदस्यों ने सुझाव दिया कि 16 मैपर स्थानीय गैर-हडोप कार्य के I / O प्रदर्शन के साथ मेल करने के लिए उनकी वर्तमान प्रणाली में आवश्यक होगा।
  • उन्होंने इसे कम करने का सुझाव भी दिया विभाजित आकार संख्या बढ़ाने के लिए प्रत्येक मैपर के लिएकामैपर और इसलिए, अधिक समानता प्रदान करते हैं।
  • अंत में, समुदाय के सदस्यों ने उन्हें बताया उपयोग गिनती (1) का हवाला देने के बजाय गिनती () datapoint_id) । ऐसा इसलिए है क्योंकि गिनती (1) के मामले में, कोई संदर्भ स्तंभ नहीं है और इसलिए, गणना करते समय कोई विघटन और विघटन नहीं होता है।

अंत में, नासा अपने हाइव क्लस्टर को हाइव समुदाय के सदस्यों द्वारा दिए गए सभी सुझावों को ध्यान में रखते हुए उनकी उम्मीदों पर खरा उतरने में सक्षम था। और इसलिए, वे ऊपर उल्लिखित सिस्टम कॉन्फ़िगरेशन का उपयोग करके केवल 15 सेकंड में अरबों पंक्तियों को क्वेरी करने में सक्षम थे।

अपाचे हाइव ट्यूटोरियल: हाइव आर्किटेक्चर और इसके घटक

निम्न छवि हाइव आर्किटेक्चर और उस प्रवाह का वर्णन करती है जिसमें एक क्वेरी सबमिट की जाती हैछत्ताऔर अंततः MapReduce ढांचे का उपयोग करके संसाधित किया गया:

अंजीर : हाइव ट्यूटोरियल - हाइव आर्किटेक्चर

जैसा कि ऊपर की छवि में दिखाया गया है, हाइव आर्किटेक्चर को निम्नलिखित घटकों में वर्गीकृत किया जा सकता है:

  • छत्ता ग्राहक: Hive JDBC, Thrift और ODBC ड्राइवरों का उपयोग करके जावा, C ++, पायथन आदि कई भाषाओं में लिखे गए एप्लिकेशन का समर्थन करता है। इसलिए व्यक्ति हमेशा अपनी पसंद की भाषा में लिखे गए हाइव क्लाइंट एप्लिकेशन को लिख सकता है।
  • छत्ता सेवाएं: Apache Hive प्रश्नों को करने के लिए विभिन्न सेवाएँ जैसे CLI, Web Interface इत्यादि प्रदान करता है। हम इस हाइव ट्यूटोरियल ब्लॉग में जल्द ही उनमें से हर एक का पता लगाएंगे।
  • प्रसंस्करण ढांचा और संसाधन प्रबंधन: आंतरिक रूप से,Hive प्रश्नों को निष्पादित करने के लिए Hadoop MapReduce ढांचे का उपयोग करता है। अपने आप में एक अलग विषय है और इसलिए, यहाँ चर्चा नहीं की गई है।
  • वितरित संग्रहण: जैसे Hive को Hadoop के शीर्ष पर स्थापित किया जाता है, यह वितरित भंडारण के लिए अंतर्निहित HDFS का उपयोग करता है। आप को संदर्भित कर सकते हैं HDFS ब्लॉग इसके बारे में अधिक जानने के लिए।

अब, हाइव आर्किटेक्चर में पहले दो प्रमुख घटकों का पता लगाएँ:

1. छत्ता ग्राहक:

अपाचे हाइव हाइव पर प्रश्नों के प्रदर्शन के लिए विभिन्न प्रकार के क्लाइंट अनुप्रयोगों का समर्थन करता है। इन ग्राहकों को तीन प्रकारों में वर्गीकृत किया जा सकता है:

  • थ्रिफ्ट ग्राहक: जैसा कि Hive सर्वर Apache Thrift पर आधारित है, यह उन सभी प्रोग्रामिंग लैंग्वेज से रिक्वेस्ट सर्व कर सकता है जो Thrift को सपोर्ट करती हैं।
  • JDBC ग्राहक: Hive जावा अनुप्रयोगों को JDBC ड्राइवर का उपयोग करके इसे कनेक्ट करने की अनुमति देता है जो वर्ग org में परिभाषित किया गया हैअमरीका की एक मूल जनजातिहूप किया थाhive.jdbcHiveDriver।
  • ODBC ग्राहक: हाइव ओडीबीसी ड्राइवर अनुप्रयोगों को अनुमति देता है जो हाइव से जुड़ने के लिए ओडीबीसी प्रोटोकॉल का समर्थन करते हैं। (JDBC ड्राइवर की तरह, ODBC ड्राइवर हाइव सर्वर के साथ संचार करने के लिए थ्रिफ्ट का उपयोग करता है।)

2. हाइव सेवाएं:

हाइव कई सेवाएं प्रदान करता है जैसा कि ऊपर की छवि में दिखाया गया है। आइए हम उनमें से प्रत्येक पर एक नज़र डालें:

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

अब, हाइव मेटास्टोर को लागू करने के विभिन्न तरीकों को समझते हैंइस हाइव ट्यूटोरियल के अगले भाग में।

अपाचे हाइव ट्यूटोरियल: मेटास्टोर कॉन्फ़िगरेशन

Metastore RDBMS और एक ओपन सोर्स ORM (ऑब्जेक्ट रिलेशनल मॉडल) लेयर का उपयोग करके मेटा डेटा जानकारी को संग्रहीत करता है जिसे डेटा न्यूक्लियस कहा जाता है जो ऑब्जेक्ट प्रतिनिधित्व को रिलेशनल स्कीमा और इसके विपरीत में परिवर्तित करता है। एचडीएफएस के बजाय आरडीबीएमएस चुनने का कारण कम विलंबता प्राप्त करना है। हम निम्नलिखित तीन विन्यासों में मेटास्टोर को लागू कर सकते हैं:

1. एंबेडेड मेटास्टोर:

डेटा इंटीग्रेशन ट्यूटोरियल के लिए टेलेंट ओपन स्टूडियो

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

2. स्थानीय मेटास्टोर:

यह कॉन्फ़िगरेशन हमें कई हाइव सत्रों की अनुमति देता है यानी कई उपयोगकर्ता एक ही समय में मेटास्टोर डेटाबेस का उपयोग कर सकते हैं। यह MySQL जैसे किसी भी JDBC अनुरूप डेटाबेस का उपयोग करके प्राप्त किया जाता है जो एक अलग JVM या Hive सेवा और मेटास्टोर सेवा की तुलना में एक अलग मशीन में चलता है जो ऊपर दिखाए गए अनुसार उसी JVM में चल रहे हैं। सामान्य तौर पर, सबसे लोकप्रिय विकल्प एक MySQL सर्वर को मेटास्टोर डेटाबेस के रूप में लागू करना है।

3. दूरस्थ मेटास्टोर:

दूरस्थ मेटास्टोर कॉन्फ़िगरेशन में, मेटास्टोर सेवा अपने अलग JVM पर चलती है, न कि Hive सेवा JVM के लिए। अन्य प्रक्रियाएं थ्रिफ़्ट नेटवर्क एपीआई का उपयोग करके मेटास्टोर सर्वर के साथ संचार करती हैं। अधिक उपलब्धता प्रदान करने के लिए आपके पास इस मामले में एक या अधिक मेटास्टोर सर्वर हो सकते हैं।रिमोट मेटास्टोर का उपयोग करने का मुख्य लाभ यह है कि आपको मेटाडोर डेटाबेस तक पहुंचने के लिए प्रत्येक Hive उपयोगकर्ता के साथ JDBC लॉगिन क्रेडेंशियल साझा करने की आवश्यकता नहीं है।

अपाचे हाइव ट्यूटोरियल: डेटा मॉडल

हाइव में डेटा को ग्रैन्युलर स्तर पर तीन प्रकारों में वर्गीकृत किया जा सकता है:

  • तालिका
  • विभाजन
  • बाल्टी

तालिकाएँ:

हाइव में टेबल्स एक रिलेशनल डेटाबेस में मौजूद टेबल की तरह ही होते हैं। आप उन पर फ़िल्टर, प्रोजेक्ट, जॉइन और यूनियन ऑपरेशन कर सकते हैं। हाइव में दो प्रकार के टेबल हैं:

1. प्रबंधित तालिका:

आदेश:

बनाएँ तालिका (column1 data_type, column2 data_type)

लोड डेटा INPATH INTO टेबल प्रबंधित_योग्य है

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

ध्यान दें: वेयरहाउस निर्देशिका का डिफ़ॉल्ट पथ / उपयोगकर्ता / हाइव / वेयरहाउस पर सेट है। एक हाइव तालिका का डेटा Ware_directory में रहता है / table_name (HDFS)। आप hive.metastore.warehouse.dir कॉन्फ़िगरेशन पैरामीटर के पथ को hive-site.xml में मौजूद निर्दिष्ट कर सकते हैं।

2. बाहरी तालिका:

आदेश:

बनाएँ बाहरी तालिका (कॉलम 1 data_type, column2 data_type) स्थान AL '

लोड डेटा INPATH D 'इनटू टेबल

के लिये बाहरी तालिका , हाइव डेटा के प्रबंधन के लिए जिम्मेदार नहीं है। इस स्थिति में, जब आप लोड कमांड जारी करते हैं, तो हाइव डेटा को अपने वेयरहाउस निर्देशिका में ले जाता है। फिर, हाइव बाहरी तालिका के लिए मेटाडेटा जानकारी बनाता है। अब, यदि आप पर DROP कमांड जारी करते हैं बाहरी तालिका , केवल बाहरी तालिका के बारे में मेटाडेटा जानकारी हटा दी जाएगी। इसलिए, आप अभी भी एचडीएफएस कमांड का उपयोग करके वेयरहाउस डायरेक्टरी से उस बहुत ही बाहरी तालिका के डेटा को पुनः प्राप्त कर सकते हैं।

विभाजन:

आदेश:

TATE तालिका_नाम (कॉलम 1 data_type, column2 data_type) संबद्ध बाय (विभाजन 1 डेटा_टाइप, पार्टीशन 2 डेटा_टाइप, और हेलिप)।

हाइव कॉलम या विभाजन कुंजी के आधार पर समान प्रकार के डेटा को एक साथ समूहीकृत करने के लिए विभाजन में तालिकाओं का आयोजन करता है। प्रत्येक तालिका में एक विशेष विभाजन की पहचान करने के लिए एक या अधिक विभाजन कुंजियाँ हो सकती हैं। यह हमें डेटा के स्लाइस पर एक तेज़ क्वेरी करने की अनुमति देता है।

ध्यान दें: याद रखें, विभाजन बनाते समय सबसे आम गलती एक मौजूदा कॉलम नाम को विभाजन कॉलम के रूप में निर्दिष्ट करना है। ऐसा करते समय, आपको एक त्रुटि प्राप्त होगी - 'शब्दार्थ विश्लेषण में त्रुटि: विभाजन कॉलम में दोहराया गया कॉलम'।

आइए एक उदाहरण लेते हुए विभाजन को समझते हैं, जहां मेरे पास एक टेबल student_details है, जिसमें कुछ इंजीनियरिंग कॉलेज के छात्र जानकारी जैसे कि student_id, नाम, विभाग, वर्ष, आदि शामिल हैं। अब, यदि मैं विभाग के कॉलम के आधार पर विभाजन करता हूं, तो सभी छात्रों की जानकारी एक विशेष विभाग से संबंधित एक ही विभाजन में संग्रहीत किया जाएगा। शारीरिक रूप से, एक विभाजन तालिका निर्देशिका में एक उप-निर्देशिका के अलावा कुछ भी नहीं है।

मान लें कि हमारे छात्र_डेट तालिका में तीन विभागों का डेटा है - CSE, ECE और सिविल। इसलिए, नीचे दी गई छवि में दिखाए गए प्रत्येक विभाग के लिए हमारे पास कुल तीन विभाजन होंगे। और, प्रत्येक विभाग के लिए हमारे पास हाइव टेबल डायरेक्टरी के तहत एक अलग उप-निर्देशिका में रहने वाले उस विभाग के संबंध में सभी आंकड़े होंगे। उदाहरण के लिए, CSE विभागों के बारे में सभी छात्र डेटा उपयोगकर्ता / हाइव / वेयरहाउस / student_details / विभाग = CSE में संग्रहीत किए जाएंगे। इसलिए, CSE छात्रों से संबंधित प्रश्नों को केवल CSE विभाजन में मौजूद डेटा के माध्यम से देखना होगा। यह विभाजन को बहुत उपयोगी बनाता है क्योंकि यह केवल स्कैन करके क्वेरी विलंबता को कम करता है से मिलता जुलता पूरे डेटा सेट के बजाय विभाजित डेटा। वास्तव में, वास्तविक दुनिया के कार्यान्वयन में, आप सैकड़ों टीबी डेटा से निपटेंगे। तो, जहां कुछ क्वेरी के लिए डेटा की इस बड़ी राशि को स्कैन करने की कल्पना करें 95% आपके द्वारा स्कैन किया गया डेटा आपकी क्वेरी के लिए प्रासंगिक नहीं था।

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

बाल्टी:

आदेश:

बनाएँ तालिका तालिका_नाम द्वारा भाग (विभाजन 1 data_type, partition2 data_type, & hellip।) पर क्लिक करके (कॉलम_name1, column_name2,…) द्वारा दर्ज किया गया (कॉलम --नाम [ASC। DESC],…)] INTO num_buckets BUCKETSET।

अब, आप तालिका में एक कॉलम के हैश फ़ंक्शन के आधार पर प्रत्येक विभाजन या बिना विभाजन तालिका को बाल्टी में विभाजित कर सकते हैं। दरअसल, प्रत्येक बकेट विभाजन निर्देशिका या टेबल डायरेक्टरी (अनपार्टिस्ड टेबल) में एक फाइल है। इसलिए, यदि आपने विभाजनों को n बाल्टियों में विभाजित करने के लिए चुना है, तो आपके पास प्रत्येक विभाजन निर्देशिका में n फाइलें होंगी। उदाहरण के लिए, आप ऊपर दी गई छवि देख सकते हैं, जहाँ हमने प्रत्येक विभाजन को 2 बाल्टी में बदल दिया है। इसलिए, प्रत्येक विभाजन, CSE का कहना है कि दो फाइलें होंगी, जिनमें से प्रत्येक में CSE छात्र के डेटा को संग्रहीत किया जाएगा।

हाइव कैसे बाल्टी में पंक्तियों को वितरित करता है?

खैर, हाइव सूत्र का उपयोग करके एक पंक्ति के लिए बाल्टी संख्या निर्धारित करता है: hash_function (bucketing_column) मोडुलो (num_of_buckets) । यहाँ, एचash_function स्तंभ डेटा प्रकार पर निर्भर करता है। उदाहरण के लिए, यदि आप कुछ कॉलम के आधार पर टेबल को बकेट कर रहे हैं, तो उपयोगकर्ता के कहे अनुसार, INT डेटाटाइप का, hash_function होगा - hash_function (user_id) ) = user_id का पूर्णांक मान । और, मान लीजिए कि आपने दो बाल्टियाँ बनाई हैं, तो हाइव गणना करके प्रत्येक विभाजन में बाल्टी 1 में जाने वाली पंक्तियों को निर्धारित करेगा: (user_id का मान) modulo (2)। इसलिए, इस मामले में, एक समान पूर्णांक के साथ user_id समाप्त होने वाली पंक्तियाँ प्रत्येक विभाजन के अनुरूप एक ही बाल्टी में रहेंगी। अन्य डेटा प्रकारों के लिए हैश_फंक्शन गणना करने के लिए थोड़ा जटिल है और वास्तव में, एक स्ट्रिंग के लिए यह मानवीय रूप से पहचानने योग्य भी नहीं है।

ध्यान दें: यदि आप अपाचे हाइव 0.x या 1.x का उपयोग कर रहे हैं, तो आपको बकेट करने से पहले अपने हाइव टर्मिनल से कमांड - सेट hive.enforce.bucketing = true जारी करना होगा। यह आपको कॉलम को बकेट करने के लिए क्लॉज द्वारा क्लस्टर का उपयोग करते समय सही reducer की अनुमति देगा। यदि आपने ऐसा नहीं किया है, तो आप पा सकते हैं कि आपके टेबल डायरेक्टरी में जो फाइलें तैयार की गई हैं, वे बाल्टियों की संख्या के बराबर नहीं हैं। एक विकल्प के रूप में, आप सेट मेप्रेड.्रेड्यूस.टैस्क = num_bucket का उपयोग करके बाल्टी की संख्या के बराबर रेड्यूसर की संख्या भी निर्धारित कर सकते हैं।

हमें बाल्टी की आवश्यकता क्यों है?

विभाजन के लिए बकेटिंग करने के दो मुख्य कारण हैं:

  • सेवा मेरे नक्शा पक्ष में शामिल हों एक ही पार्टीशन में मौजूद होने के लिए यूनिक जॉइन की से संबंधित डेटा की आवश्यकता होती है। लेकिन उन मामलों के बारे में क्या है जहां आपकी विभाजन कुंजी जुड़ने से भिन्न होती है? इसलिए, इन मामलों में आप सम्मिलित कुंजी का उपयोग करके तालिका को बाल्टी में डालकर एक मैप साइड जॉइन कर सकते हैं।
  • बकेटिंग नमूना प्रक्रिया को अधिक कुशल बनाता है और इसलिए, हमें क्वेरी समय को कम करने की अनुमति देता है।

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

अब जब आप अपाचे हाइव और इसकी विशेषताओं को समझ गए हैं, तो देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। Edureka Big Data Hadoop सर्टिफिकेशन ट्रेनिंग कोर्स शिक्षार्थियों को रिटेल, सोशल मीडिया, एविएशन, टूरिज्म, फाइनेंस डोमेन पर रियल-टाइम उपयोग के मामलों का उपयोग करके HDFS, यार्न, MapReduce, Pig, Hive, HBase, Oozie, Flume और Sqoop में निपुण बनने में मदद करता है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपके पास वापस आ जाएंगे।