hadoop सुअर और हाइव के बीच अंतर? दोनों क्यों हैं?




hive apache-pig (16)

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

मेरी पृष्ठभूमि - हडोप दुनिया में 4 सप्ताह पुरानी। क्लौडेरा के हैडोप वीएम का उपयोग करके हाइव, पिग और हाडोप में थोड़ा सा डब किया। मानचित्र-कमी और जीएफएस ( पीडीएफ लिंक ) पर Google के पेपर को पढ़ा है।

मैं समझता हूँ कि-

  • सुअर की भाषा पिग लैटिन एक शिफ्ट है (प्रोग्रामर सोचने के तरीके के अनुरूप है) एसक्यूएल प्रोग्रामिंग की घोषणात्मक शैली और हाइव की क्वेरी भाषा एसक्यूएल जैसा दिखता है।

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

  • पिग लैटिन और हाइव दोनों आदेश मानचित्र पर संकलित करते हैं और नौकरियों को कम करते हैं।

मेरा सवाल - एक होने का लक्ष्य क्या है (एक सुअर कहें) उद्देश्य को पूरा कर सकता है। क्या यह सिर्फ इसलिए है क्योंकि सुअर याहू द्वारा सुसमाचार प्रचारित है! और फेसबुक द्वारा हाइव?


इस लिंक में पीआईजी और HIVE के बीच अंतर पढ़ें।

http://www.aptibook.com/Articles/Pig-and-hive-advantages-disadvantages-features

सभी पहलुओं को दिया जाता है। यदि आप भ्रम में हैं जो चुनना है तो आपको उस वेब पेज को देखना होगा।


सुअर कुछ खाती है! मतलब यह असंरचित डेटा का उपभोग कर सकता है।

हाइव को स्कीमा की आवश्यकता होती है।



मेरा मानना ​​है कि आपके प्रश्न का असली जवाब यह है कि वे स्वतंत्र परियोजनाएं हैं और कोई केंद्रीय समन्वयित लक्ष्य नहीं था। वे शुरुआती जगहों पर थे और दोनों परियोजनाओं के विस्तार के साथ समय के साथ ओवरलैप हो गए हैं।

हडोप ओ'रेली पुस्तक से हटाया गया:

सुअर: बहुत बड़े डेटासेट की खोज के लिए एक डेटाफ्लो भाषा और पर्यावरण।

हाइव: एक वितरित डेटा गोदाम



  1. पिग-लैटिन डेटा प्रवाह शैली है, सॉफ्टवेयर इंजीनियर के लिए अधिक उपयुक्त है। जबकि एसक्यूएल एनालिटिक्स व्यक्ति के लिए अधिक उपयुक्त है जो एसक्यूएल में उपयोग किया जाता है। जटिल कार्य के लिए, हाइव के लिए आपको मध्यवर्ती डेटा स्टोर करने के लिए मैन्युअल रूप से अस्थायी तालिका बनाने के लिए मैन्युअल रूप से बनाना होगा, लेकिन यह सुअर के लिए आवश्यक नहीं है।

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

  3. सुअर में यूडीएफ लिखना मेरी राय में हाइव से ज्यादा आसान है।

  4. सुअर में कोई मेटाडाटा समर्थन नहीं है, (या यह वैकल्पिक है, भविष्य में यह एचसीटीएल को एकीकृत कर सकता है)। हाइव में डेटाबेस में संग्रहीत टेबल 'मेटाडेटा है।

  5. आप स्थानीय पर्यावरण में सुअर स्क्रिप्ट को डीबग कर सकते हैं, लेकिन ऐसा करने के लिए हाइव करना मुश्किल होगा। कारण बिंदु 3 है। आपको अपने स्थानीय पर्यावरण में हाइव मेटाडेटा सेट करने की आवश्यकता है, बहुत समय लेने वाला।


मैंने इसे सबसे उपयोगी पाया (हालांकि, यह एक वर्ष पुराना है) - http://yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo

यह विशेष रूप से पिग बनाम हाइव और याहू में कब और कहां नियोजित है, के बारे में बात करता है। मुझे यह बहुत अंतर्दृष्टि मिली। कुछ दिलचस्प नोट्स:

डेटा सेट में वृद्धिशील परिवर्तन / अपडेट पर:

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

स्ट्रीमिंग के माध्यम से अन्य टूल्स का उपयोग करने पर:

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

डेटा वेयरहाउसिंग के लिए हाइव का उपयोग करने पर:

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

हैडोप सबप्रोजेक्ट हाइव हडोप के लिए एक एसक्यूएल इंटरफेस और रिलेशनल मॉडल प्रदान करता है। हाइव टीम ने ओडीबीसी जैसे इंटरफेस के माध्यम से बीआई टूल्स के साथ एकीकृत करने के लिए काम शुरू कर दिया है।


संक्षेप में दोनों का बहुत उच्च स्तर का अवलोकन देने के लिए:

1) सुअर हडूप पर एक रिलेशनल बीजगणित है

2) हाइव एक एसक्यूएल हैडऑप (सुअर के ऊपर एक स्तर)


पीआईजी में क्या संभव नहीं है?

विभाजन को HIVE का उपयोग करके किया जा सकता है लेकिन पीआईजी में नहीं, यह आउटपुट को छोड़ने का एक तरीका है।

क्या पीआईजी कर सकता है जो HIVE में संभव नहीं है?

पोजिशनल रेफरेंसिंग - यहां तक ​​कि जब आपके पास फील्ड नाम नहीं होते हैं, तब भी हम $ 0 की तरह स्थिति का उपयोग कर सकते हैं - पहले फ़ील्ड के लिए, दूसरे के लिए $ 1 और इसी तरह।

और एक और मौलिक अंतर यह है कि, पीआईजी को मूल्य लिखने के लिए स्कीमा की आवश्यकता नहीं है लेकिन HIVE को स्कीमा की आवश्यकता है।

आप जेडीबीसी और दूसरों का उपयोग करके किसी भी बाहरी एप्लिकेशन से HIVE तक कनेक्ट कर सकते हैं लेकिन पीआईजी के साथ नहीं।

नोट: दोनों एचडीएफएस (हडूप वितरित फाइल सिस्टम) के शीर्ष पर चलता है और कथन को मानचित्र कम करने के कार्यक्रमों में परिवर्तित कर दिया जाता है।


आमतौर पर बोलने वाले ईटीएल प्रकार के वर्कलोड के लिए सुअर उपयोगी होता है। उदाहरण के लिए परिवर्तनों का सेट आपको हर दिन अपने डेटा में करने की ज़रूरत है।

हाइव चमकता है जब आपको adhoc क्वेरी चलाने की आवश्यकता होती है या बस डेटा एक्सप्लोर करना चाहते हैं। यह कभी-कभी आपके विज़ुअलाइज़ेशन लेयर (टैबलेट / क्विक्यूव्यू) में इंटरफ़ेस के रूप में कार्य कर सकता है।

दोनों आवश्यक हैं और विभिन्न उद्देश्य प्रदान करते हैं।


आप सुअर / हाइव प्रश्नों के साथ समान परिणाम प्राप्त कर सकते हैं। मुख्य अंतर समझने / लिखने / प्रश्न बनाने के दृष्टिकोण के भीतर है।

सुअर डेटा का प्रवाह पैदा करता है: छोटे कदम जहां आप प्रत्येक प्रसंस्करण करते हैं
हाइव आपको अपने डेटा पर काम करने के लिए एसक्यूएल जैसी भाषा देता है, इसलिए आरडीबीएमएस से रूपांतरण बहुत आसान है (सुअर किसी ऐसे व्यक्ति के लिए आसान हो सकता है जिसने एसक्यूएल के साथ पहले अनुभव नहीं किया हो)

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

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


हाइव बनाम पिग-

हाइव एसक्यूएल इंटरफेस के रूप में है जो एसक्यूएल समझदार उपयोगकर्ताओं या अन्य टूल्स जैसे टेबलू / माइक्रोस्ट्रेटी / किसी अन्य उपकरण या भाषा की अनुमति देता है जिसमें एसक्यूएल इंटरफ़ेस है ..

पीआईजी एक ईटीएल पाइपलाइन की तरह है ... चरण-दर-चरण कमांड जैसे वैरिएबल घोषित करना, लूपिंग, पुनरावृत्ति, सशर्त बयान इत्यादि।

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

दोनों का उद्देश्य अलग-अलग है लेकिन हुड के नीचे, दोनों समान करते हैं, नक्शे को कनवर्ट करते हैं कार्यक्रमों को कम करते हैं। साथ ही अपाचे ओपन सोर्स समुदाय दोनों परियोजनाओं में अधिक से अधिक सुविधाएं जोड़ता है


एक "dezyre" आलेख से एक अखरोट खोल में पिग बनाम हाइव तुलना पर एक नज़र डालें

एचआईवी पीआईजी से बेहतर है: विभाजन, सर्वर, वेब इंटरफ़ेस और जेडीबीसी / ओडीबीसी समर्थन।

कुछ अंतर:

  1. संरचित डेटा और पीआईजी अर्ध संरचित डेटा के लिए सबसे अच्छा है

  2. प्रोग्रामिंग के लिए रिपोर्टिंग और पीआईजी के लिए हाइव का उपयोग किया जाता है

  3. हाइव को एक प्रक्रियात्मक भाषा के रूप में घोषणात्मक एसक्यूएल और पीआईजी के रूप में उपयोग किया जाता है

  4. हाइव विभाजन का समर्थन करता है और पीआईजी नहीं करता है

  5. हाइव वैकल्पिक ट्र्रिफ्ट आधारित सर्वर शुरू कर सकता है और पीआईजी नहीं कर सकता है

  6. हाइव पहले से टेबल को परिभाषित करता है ( स्कीमा ) + डेटाबेस में स्कीमा जानकारी संग्रहीत करता है और पीआईजी में डेटाबेस का समर्पित मेटाडेटा नहीं होता है

  7. हाइव एवरो का समर्थन नहीं करता है लेकिन पीआईजी करता है। संपादित करें: हाइव एवरो का समर्थन करता है, serde को org.apache.hadoop.hive.serde2.avro के रूप में निर्दिष्ट करें

  8. सुअर बाहरी जोड़ों के प्रदर्शन के लिए अतिरिक्त कोग्राउप सुविधा का भी समर्थन करता है लेकिन हाइव नहीं करता है। लेकिन दोनों हाइव और पीआईजी गतिशील रूप से शामिल हो सकते हैं , क्रमबद्ध और क्रमबद्ध कर सकते हैं।


हाइव को एसक्यूएल के साथ आरामदायक समुदाय के लिए अपील करने के लिए डिज़ाइन किया गया था। इसका दर्शन यह था कि हमें अभी तक एक और पटकथा भाषा की आवश्यकता नहीं है। हाइव मानचित्र का समर्थन करता है और उपयोगकर्ता की पसंद की भाषा में स्क्रिप्ट को ट्रांसफॉर्म को कम करता है (जिसे SQL क्लॉज के भीतर एम्बेड किया जा सकता है)। इसका व्यापक रूप से एसक्यूएल के साथ-साथ पाइथन में डेटा खनिक प्रोग्रामिंग द्वारा विश्लेषकों द्वारा फेसबुक में व्यापक रूप से उपयोग किया जाता है। सुअर में एसक्यूएल संगतता प्रयासों को AFAIK छोड़ दिया गया है - इसलिए दोनों परियोजनाओं के बीच अंतर बहुत स्पष्ट है।

एसक्यूएल सिंटैक्स का समर्थन करने का भी अर्थ है कि मौजूदा बीआई टूल्स जैसे माइक्रोस्ट्रेटीजी के साथ एकीकृत करना संभव है। हाइव में ओडीबीसी / जेडीबीसी चालक है (यह एक काम प्रगति पर है) जो इसे निकट भविष्य में होने की अनुमति देनी चाहिए। यह इंडेक्स के लिए समर्थन भी जोड़ना शुरू कर रहा है जो इस तरह के वातावरण में सामान्य ड्रिल-डाउन प्रश्नों के लिए समर्थन की अनुमति देनी चाहिए।

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


जब हम इस अर्थ में हैडोप का उपयोग कर रहे हैं तो इसका मतलब है कि हम विशाल डेटा प्रोसेसिंग की कोशिश कर रहे हैं डेटा प्रोसेसिंग का अंतिम लक्ष्य सामग्री / रिपोर्ट तैयार करना होगा।

तो यह आंतरिक रूप से 2 प्रमुख गतिविधियों में शामिल है 1) डेटा प्रोसेसिंग लोड हो रहा है 2) सामग्री उत्पन्न करें और रिपोर्टिंग / आदि के लिए इसका इस्तेमाल करें ..

लोड हो रहा है / डेटा प्रक्रिया -> सुअर इसमें सहायक होगा। यह एक ईटीएल के रूप में मदद करता है (हम सुअर स्क्रिप्ट का उपयोग करके एटीएल संचालन कर सकते हैं।) परिणाम संसाधित होने के बाद हम संसाधित परिणाम के आधार पर रिपोर्ट उत्पन्न करने के लिए हाइव का उपयोग कर सकते हैं।

हाइव: वेयरहाउस प्रसंस्करण के लिए एचडीएफएस के शीर्ष पर बनाया गया है। हम सुअर से उत्पन्न संसाधित सामग्री से छिद्र का उपयोग करके आसानी से विज्ञापन रिपोर्ट को जेनरेट कर सकते हैं।







apache-pig