HBase और Hadoop / HDFS के बीच अंतर


130

यह एक तरह का भोला सवाल है लेकिन मैं NoSQL प्रतिमान के लिए नया हूं और इसके बारे में ज्यादा नहीं जानता। तो अगर कोई मुझे स्पष्ट रूप से HBase और Hadoop के बीच अंतर समझने में मदद कर सकता है या यदि कुछ संकेत देता है जो मुझे अंतर समझने में मदद कर सकता है।

अब तक, मैंने कुछ शोध और आरोप लगाए। मेरी समझ से Hadoop HDFS में डेटा (फ़ाइलों) के कच्चे चंक के साथ काम करने के लिए ढांचा प्रदान करता है और HBase, Hadoop के ऊपर डेटाबेस इंजन है, जो मूल रूप से कच्चे डेटा चंक के बजाय संरचित डेटा के साथ काम करता है। Hbase HDFS पर एक तार्किक परत प्रदान करता है जैसा कि SQL करता है। क्या यह सही है?

Pls मुझे सही करने के लिए स्वतंत्र महसूस।

धन्यवाद।


7
शायद प्रश्न शीर्षक "HBase और HDFS के बीच अंतर" होना चाहिए?
मैट बॉल

जवाबों:


248

Hadoop मूल रूप से 3 चीजें हैं, एक FS (Hadoop Distributed File System), एक संगणना ढाँचा (MapReduce) और एक प्रबंधन पुल (फिर भी एक अन्य संसाधन वार्ताकार)। HDFS आपको वितरित मात्रा में डेटा को अधिक मात्रा में स्टोर करने की अनुमति देता है (तेजी से रीड / राइट एक्सेस प्रदान करता है) और निरर्थक (बेहतर उपलब्धता प्रदान करता है) तरीके से। और MapReduce आपको वितरित और समानांतर तरीके से इस विशाल डेटा को संसाधित करने की अनुमति देता है। लेकिन MapReduce सिर्फ HDFS तक सीमित नहीं है। एफएस होने के नाते, एचडीएफएस में यादृच्छिक पढ़ने / लिखने की क्षमता का अभाव है। यह अनुक्रमिक डेटा एक्सेस के लिए अच्छा है। और यह वह जगह है जहाँ HBase चित्र में आता है। यह एक NoSQL डेटाबेस है जो आपके Hadoop क्लस्टर के ऊपर चलता है और आपको अपने डेटा तक रैंडम रियल-टाइम रीड / राइट एक्सेस प्रदान करता है।

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

Hadoop

  1. बड़ी फ़ाइलों के स्ट्रीमिंग एक्सेस के लिए अनुकूलित।
  2. लेखन-एक बार पढ़ने वाली कई विचारधारा का अनुसरण करता है।
  3. यादृच्छिक पढ़ने / लिखने का समर्थन नहीं करता है।

HBase

  1. स्तंभ कुंजी में स्टोर कुंजी / मान जोड़े (कॉलम को स्तंभ परिवारों के रूप में एक साथ जोड़ा जाता है)।
  2. एक बड़े डेटा सेट के भीतर से कम मात्रा में डेटा तक कम विलंबता पहुंच प्रदान करता है।
  3. लचीला डेटा मॉडल प्रदान करता है।

Hadoop ऑफ़लाइन बैच-प्रोसेसिंग थोड़े सामान के लिए सबसे अनुकूल है जबकि HBase का उपयोग तब किया जाता है जब आपके पास वास्तविक समय की आवश्यकता होती है।

एक अनुरूप तुलना MySQL और Ext4 के बीच होगी।


बहुत बड़ी मात्रा में डेटा (छोटी फ़ाइलों) के लिए डबटेक के रूप में hbase का उपयोग करने के बारे में क्या? क्या वह hdfs जितना डेटा प्रबंधित कर सकता है?
मेहदी तजि

@MehdiTAZI जरूर। HBase HDFS के शीर्ष पर चलता है ताकि स्केलेबिलिटी के बारे में चिंता न करें। आपको बस यह सुनिश्चित करने की आवश्यकता है कि आप HBase का उपयोग कर रहे हैं क्योंकि इसका उपयोग अधिकतम प्रदर्शन प्राप्त करने के लिए किया जाना चाहिए
तारिक

परिचालन मुद्दों के बारे में क्या?
मेहदी तजि

मैं यह नहीं कहूंगा कि HBase ऑप्स टीम की दुःस्वप्न है, लेकिन इसमें कुछ ऐसे क्षेत्र हैं जहां अभी भी कुछ सुधार की गुंजाइश है, और समुदाय वास्तव में कड़ी मेहनत कर रहा है ताकि इसे ठीक किया जा सके। लेकिन यह किसी भी सॉफ्टवेयर के लिए सही है। कोई समस्या प्रमाण उपकरण / प्रौद्योगिकी IMHO नहीं है। यदि यह आपकी आवश्यकताओं में फिट बैठता है, तो आपको निश्चित रूप से इसे आज़माना चाहिए। अपने बेतरतीब वास्तविक समय को पढ़ने / लिखने की जरूरतों को संभालने के लिए यह एक अचंभित करने वाला उपकरण है।
तारिक

22

अपाचे Hadoop परियोजना में चार प्रमुख मॉड्यूल शामिल हैं

  1. Hadoop Common : सामान्य उपयोगिताओं जो अन्य Hadoop मॉड्यूल का समर्थन करती हैं।
  2. Hadoop डिस्ट्रिब्यूटेड फाइल सिस्टम (HDFS ™) : एक वितरित फाइल सिस्टम जो एप्लिकेशन डेटा को उच्च-थ्रूपुट एक्सेस प्रदान करता है।
  3. Hadoop YARN : नौकरी निर्धारण और क्लस्टर संसाधन प्रबंधन के लिए एक रूपरेखा।
  4. Hadoop MapReduce : बड़े डेटा सेट के समानांतर प्रसंस्करण के लिए एक यार्न- आधारित प्रणाली।

HBase एक स्केलेबल, वितरित डेटाबेस है जो बड़े तालिकाओं के लिए संरचित डेटा भंडारण का समर्थन करता है। जिस तरह BigtableGoogle फ़ाइल सिस्टम द्वारा प्रदान किए गए वितरित डेटा भंडारण का लाभ उठाता है, अपाचे HBase Hadoop और HDFS के शीर्ष पर Bigtable जैसी क्षमताएं प्रदान करता है।

HBase का उपयोग कब करें:

  1. यदि आपके आवेदन में एक चर स्कीमा है जहां प्रत्येक पंक्ति थोड़ी अलग है
  2. यदि आप पाते हैं कि आपका डेटा संग्रह में संग्रहीत किया गया है, तो यह सभी समान मूल्य पर बंद है
  3. यदि आपको अपने बिग डेटा तक यादृच्छिक, वास्तविक समय पढ़ने / लिखने की आवश्यकता है।
  4. यदि आपको भंडारण या पुनर्प्राप्त करते समय डेटा पर आधारित महत्वपूर्ण पहुंच की आवश्यकता होती है।
  5. यदि आपके पास मौजूदा Hadoop क्लस्टर के साथ भारी मात्रा में डेटा है

लेकिन HBase की कुछ सीमाएँ हैं

  1. इसका उपयोग क्लासिक ट्रांसेक्शनल एप्लिकेशन या रिलेशनल एनालिटिक्स के लिए भी नहीं किया जा सकता है।
  2. बड़े बैच MapReduce करते समय यह HDFS के लिए एक पूर्ण विकल्प नहीं है।
  3. यह SQL से बात नहीं करता है, एक अनुकूलक है, क्रॉस रिकॉर्ड लेनदेन या जॉइन का समर्थन करता है।
  4. इसे जटिल एक्सेस पैटर्न (जैसे जॉइन) के साथ इस्तेमाल नहीं किया जा सकता

सारांश:

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

क्लाउडडा ब्लॉग से Do's and Do of HBase पर एक नजर डालें ।


बहुत बड़ी मात्रा में डेटा (छोटी फ़ाइलों) के लिए डबटेक के रूप में hbase का उपयोग करने के बारे में क्या? क्या वह hdfs जितना डेटा प्रबंधित कर सकता है?
मेहदी तजि

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

4

Hadoop ने वितरित फ़ाइल सिस्टम यानी HDFS का उपयोग बिगडाटा के भंडारण के लिए किया है। लेकिन इन सीमाओं को पार करने के लिए HDFS और इनवर्टर की कुछ सीमाएं हैं, NoSQL डेटाबेस जैसे HBase, Cassandra और Mongodb अस्तित्व में आए।

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

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


4

एक चित्र में HBase और HDFS दोनों

एक चित्र में HBase और HDFS दोनों

ध्यान दें:

HDN राक्षसों (हरे रंग में हाइलाइटेड ) की जाँच करें जैसे DataNode (ध्वस्त क्षेत्र सर्वर) और NameNode क्लस्टर में HBase और Hadoop दोनों HDFS के साथ

HDFS एक वितरित फाइल सिस्टम है जो बड़ी फ़ाइलों के भंडारण के लिए अच्छी तरह से अनुकूल है। जो फाइलों में तेजी से व्यक्तिगत रिकॉर्ड लुकअप प्रदान नहीं करता है।

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

यह कैसा दिखता है?

खैर, बुनियादी ढांचे के स्तर पर, क्लस्टर में प्रत्येक साल्व मशीन में राक्षसों का पालन होता है

  • क्षेत्र सर्वर - HBase
  • डेटा नोड - एचडीएफएस

गुलाम की मशीन

लुकअप के साथ यह कैसे तेज़ है?

एचबीएफएस निम्नलिखित डेटा मॉडल का उपयोग करके अंतर्निहित भंडारण के रूप में एचडीएफएस (कभी-कभी अन्य वितरित फ़ाइल सिस्टम भी) पर तेजी से लुकअप प्राप्त करता है

  • तालिका

    • एक HBase तालिका में कई पंक्तियाँ होती हैं।
  • पंक्ति

    • HBase में एक पंक्ति में एक पंक्ति कुंजी और एक या अधिक कॉलम होते हैं, जो उनके साथ जुड़े मूल्यों के साथ होते हैं। पंक्तियों को पंक्तिबद्ध करके वर्णानुक्रम में सॉर्ट किया जाता है क्योंकि वे संग्रहीत होते हैं। इस कारण से, पंक्ति कुंजी का डिज़ाइन बहुत महत्वपूर्ण है। लक्ष्य डेटा को इस तरह से संग्रहित करना है कि संबंधित पंक्तियाँ एक-दूसरे के पास हैं। एक सामान्य पंक्ति कुंजी पैटर्न एक वेबसाइट डोमेन है। यदि आपकी पंक्ति कुंजियाँ डोमेन हैं, तो आपको संभवतः उन्हें रिवर्स (org.apache.www, org.apache.mail, org.apache.jira) में संग्रहीत करना चाहिए। इस तरह, सभी अपाचे डोमेन सबडोमेन के पहले अक्षर के आधार पर फैलाए जाने के बजाय तालिका में एक दूसरे के पास हैं।
  • स्तंभ

    • HBase में एक कॉलम में एक कॉलम परिवार और एक कॉलम क्वालिफायर होता है, जिसे a: (colon) वर्ण द्वारा सीमांकित किया जाता है।
  • कॉलम परिवार

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

    • एक दिए गए टुकड़े के लिए सूचकांक प्रदान करने के लिए एक कॉलम परिवार में एक कॉलम क्वालिफायर जोड़ा जाता है। एक कॉलम परिवार की सामग्री को देखते हुए, एक कॉलम क्वालिफायर सामग्री हो सकती है: HTML और एक अन्य सामग्री हो सकती है: पीडीएफ। हालांकि स्तंभ परिवार टेबल निर्माण पर तय किए जाते हैं, कॉलम क्वालिफायर परस्पर भिन्न होते हैं और पंक्तियों के बीच बहुत भिन्न हो सकते हैं।
  • सेल

    • सेल पंक्ति, स्तंभ परिवार और स्तंभ योग्यता का एक संयोजन है, और इसमें एक मान और टाइमस्टैम्प होता है, जो मूल्य के संस्करण का प्रतिनिधित्व करता है।
  • समय-चिह्न

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

क्लाइंट रीड रिक्वेस्ट फ़्लो:

क्लाइंट रीड रिक्वेस्ट फ्लो

उपरोक्त चित्र में मेटा टेबल क्या है?

मेटा टेबल

सभी जानकारी के बाद, HBase रीड फ़्लो इन संस्थाओं को देखने के लिए लुकअप है

  1. सबसे पहले, स्कैनर ब्लॉक कैश में रो कोशिकाओं के लिए दिखता है - रीड-कैश। हाल ही में पढ़ी गई कुंजी मानों को यहां कैश किया गया है, और कम से कम हाल ही में उपयोग की गई मेमोरी को हटा दिया गया है।
  2. अगला, स्कैनर मेमस्ट्रोर में दिखता है , मेमोरी में राइट कैश सबसे हाल ही में लिखता है।
  3. यदि स्कैनर मेमेस्टोर और ब्लॉक कैश में सभी पंक्ति कोशिकाओं को नहीं खोजता है, तो HBase मेमोरी में HFiles को लोड करने के लिए ब्लॉक कैश इंडेक्स और ब्लूम फ़िल्टर का उपयोग करेगा , जिसमें लक्ष्य पंक्ति कोशिकाएं हो सकती हैं।

स्रोत और अधिक जानकारी:

  1. HBase डेटा मॉडल
  2. HBase आर्किटेक्चर

1

संदर्भ: http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop

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

मूल रूप से इसका अर्थ है एक ऑफ़लाइन प्रणाली - आप एचडीएफएस पर डेटा संग्रहीत करते हैं और आप इसे नौकरी चलाकर संसाधित कर सकते हैं।

दूसरी ओर एक स्तंभ आधारित डेटाबेस में HBase। यह HDFS को भंडारण के रूप में उपयोग करता है - जो बैकअप \ redundency \ etc की देखभाल करता है, लेकिन इसका "ऑनलाइन स्टोर" है - जिसका अर्थ है कि आप इसे विशिष्ट पंक्ति \ पंक्तियों आदि के लिए क्वेरी कर सकते हैं और तत्काल मान प्राप्त कर सकते हैं।


0

HDFS एक जावा आधारित वितरित फाइल सिस्टम है जो आपको Hadoop क्लस्टर में कई नोड्स में बड़े डेटा को स्टोर करने की अनुमति देता है। जबकि HBase एक NoSQL डेटाबेस (NTFS और MySQL के समान) है।

HDFS और HBase दोनों ही वितरित वातावरण में संरचित, अर्ध-संरचित और असंरचित जैसे सभी प्रकार के डेटा को संग्रहीत करते हैं।

HDFS और HBase के बीच अंतर

  • HBase बड़े डेटा सेट के भीतर कम मात्रा में डेटा तक कम विलंबता पहुंच प्रदान करता है जबकि HDFS उच्च विलंबता संचालन प्रदान करता है।
  • HBase यादृच्छिक पढ़ने और लिखने का समर्थन करता है जबकि HDFS WORM (एक बार पढ़ें कई या कई बार लिखता है) का समर्थन करता है।
  • HDFS मूल रूप से या मुख्य रूप से MapReduce नौकरियों के माध्यम से एक्सेस किया जाता है, जबकि HBase शेल कमांड, जावा एपीआई, रीस्ट, एवरो या थ्रिफ्ट एपीआई के माध्यम से एक्सेस किया जाता है।

HDFS वितरित वातावरण में बड़े डेटा सेट को संग्रहीत करता है और उस डेटा पर बैच प्रोसेसिंग का लाभ उठाता है।

हालांकि HBase एक कॉलम ओरिएंटेड तरीके से डेटा संग्रहीत करता है जहां प्रत्येक कॉलम को एक साथ संग्रहीत किया जाता है, ताकि रीडिंग वास्तविक समय प्रसंस्करण का तेजी से लाभ उठा सके।

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.