HBase
 sql >> डेटाबेस >  >> NoSQL >> HBase

Hadoop की सीमाएं, Hadoop की कमियों को दूर करने के तरीके

हमने Hadoop सुविधाओं . पर चर्चा की है हमारे पिछले Hadoop ट्यूटोरियल में। अब हम Hadoop की सीमाओं को कवर करने जा रहे हैं। Apache Hadoop ढांचे में कई कमियां हैं।

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

Hadoop की इन सभी सीमाओं के बारे में हम इस Hadoop ट्यूटोरियल में विस्तार से चर्चा करेंगे।

Hadoop क्या है?

अपाचे हडोप बड़ी मात्रा में डेटा सेट के वितरित भंडारण और प्रसंस्करण के लिए एक खुला स्रोत सॉफ्टवेयर ढांचा है। ओपन सोर्स का मतलब है कि यह स्वतंत्र रूप से उपलब्ध है और यहां तक ​​कि हम जरूरत के अनुसार इसके सोर्स कोड को भी बदल सकते हैं।

Apache Hadoop हजारों नोड्स वाले सिस्टम पर एप्लिकेशन चलाना भी संभव बनाता है। इसके वितरित फाइल सिस्टम में नोड्स के बीच तेजी से डेटा ट्रांसफर दरों का प्रावधान है।

यह नोड विफलता के मामले में सिस्टम को संचालन जारी रखने की भी अनुमति देता है। Hadoop की मुख्य विशेषताएं इस प्रकार हैं:

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

हालाँकि Hadoop बिग डेटा का सबसे शक्तिशाली उपकरण है, लेकिन इसकी कई सीमाएँ हैं। Hadoop की सीमाओं के कारण, Apache Spark और Apache Flink अस्तित्व में आई।

Hadoop की सीमाएं

Apache Hadoop की विभिन्न सीमाएँ उनके समाधान के साथ नीचे दी गई हैं-

ए. छोटी फ़ाइलों से संबंधित समस्याएं

Hadoop के साथ मुख्य समस्या यह है कि यह छोटे डेटा के लिए उपयुक्त नहीं है। एचडीएफएस इसकी उच्च क्षमता डिजाइन के कारण छोटे के यादृच्छिक पढ़ने का समर्थन करने की क्षमता का अभाव है।

छोटी फ़ाइलें HDFS ब्लॉक आकार (डिफ़ॉल्ट 128MB) से छोटी होती हैं। यदि आप इतनी बड़ी संख्या में छोटी फ़ाइलों को संग्रहीत कर रहे हैं, तो HDFS इन बहुत सारी छोटी फ़ाइलों को संभाल नहीं सकता है।

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

समाधान: 

बड़ी फ़ाइलें बनाने के लिए बस छोटी फ़ाइलों को मर्ज करें और फिर बड़ी फ़ाइलों को HDFS में कॉपी करें।

Hadoop संग्रह (HAR फ़ाइलें) बहुत सी छोटी फ़ाइलों की समस्या से संबंधित है। Hadoop Archives HDFS के शीर्ष पर एक स्तरित फाइल सिस्टम बनाकर काम करता है।

Hadoop आर्काइव कमांड की मदद से HAR फाइलें बनाई जाती हैं; यह छोटी संख्या में HDFS फ़ाइलों में संग्रहीत की जा रही फ़ाइलों को पैक करने के लिए MapReduce कार्य चलाता है। एचएआर के माध्यम से फाइलें पढ़ना एचडीएफएस के माध्यम से पढ़ने से ज्यादा कुशल नहीं है।

चूंकि प्रत्येक HAR फ़ाइल एक्सेस के लिए दो इंडेक्स फ़ाइलों को पढ़ने के साथ-साथ डेटा फ़ाइल को पढ़ने की आवश्यकता होती है, यह इसे धीमा कर देगा।

सीक्वेंस फाइलें छोटी फाइल की समस्या को भी दूर करती हैं। जिसमें हम फ़ाइल नाम को कुंजी के रूप में और फ़ाइल सामग्री को मान के रूप में उपयोग करते हैं।

फाइलों के लिए एक प्रोग्राम लिखकर (100 केबी), हम उन्हें एक सीक्वेंस फाइल में डाल सकते हैं और फिर हम उन्हें सीक्वेंस फाइल पर चल रहे स्ट्रीमिंग फैशन में प्रोसेस कर सकते हैं।

Hadoop में MapReduce अनुक्रम फ़ाइल को विखंडू में तोड़ सकता है और प्रत्येक खंड पर स्वतंत्र रूप से काम कर सकता है क्योंकि अनुक्रम फ़ाइल विभाजित करने योग्य है।

Hbase में फाइलों को स्टोर करके हम छोटी फाइल की समस्या को दूर कर सकते हैं। हम वास्तव में लाखों छोटी फ़ाइल को HBase में संग्रहीत नहीं कर रहे हैं बल्कि फ़ाइल की बाइनरी सामग्री को एक सेल में जोड़ रहे हैं।

<एच4>बी. धीमी प्रसंस्करण गति

MapReduce बड़ी मात्रा में डेटा संसाधित करता है। Hadoop में, MapReduce प्रसंस्करण को चरणों में विभाजित करके काम करता है:मानचित्र और कम करें . इसलिए, MapReduce को इन कार्यों को करने के लिए बहुत समय की आवश्यकता होती है, जिससे विलंबता बढ़ती है। इसलिए, प्रसंस्करण गति कम कर देता है।

समाधान:

डेटा की इन-मेमोरी प्रोसेसिंग से, Apache Spark इस मुद्दे पर काबू पाती है। इन-मेमोरी प्रोसेसिंग की तरह, डेटा/प्रक्रियाओं को डिस्क के अंदर और बाहर ले जाने में कोई समय नहीं लगता है, इस प्रकार यह इसे तेज़ बनाता है।

MapReduce की तुलना में Apache Spark 100 गुना तेज है क्योंकि यह मेमोरी में सब कुछ प्रोसेस करती है।

फ्लिंक भी इस समस्या को दूर कर सकता है। स्ट्रीमिंग आर्किटेक्चर की वजह से फ्लिंक स्पार्क की तुलना में तेजी से प्रोसेस करता है।

सी. केवल बैच संसाधन के लिए समर्थन

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

समाधान

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

<एच4>डी. कोई रीयल-टाइम प्रोसेसिंग नहीं

Apache Hadoop एक बैच प्रोसेसिंग फ्रेमवर्क है। इसका मतलब है कि यह इनपुट में बड़ी मात्रा में डेटा लेता है, इसे संसाधित करता है और परिणाम उत्पन्न करता है।

बड़ी मात्रा में डेटा को संसाधित करने के लिए बैच प्रसंस्करण बहुत कुशल है, लेकिन संसाधित किए जा रहे डेटा के आकार और सिस्टम की कम्प्यूटेशनल शक्ति पर निर्भर करता है; एक आउटपुट में काफी देरी हो सकती है। Apache Hadoop रीयल-टाइम प्रोसेसिंग के लिए उपयुक्त नहीं है।

समाधान:

स्पार्क स्ट्रीम प्रोसेसिंग के लिए उपयुक्त है। स्टीमिंग प्रोसेसिंग निरंतर इनपुट / आउटपुट डेटा प्रदान करती है। यह कम समय में डेटा को प्रोसेस करता है।

फ्लिंक स्ट्रीमिंग और बैच प्रोसेसिंग दोनों के लिए सिंगल रन-टाइम प्रदान करता है।

ई. पुनरावृत्तीय संसाधन

Apache Hadoop पुनरावृत्त प्रसंस्करण के लिए अधिक कुशल नहीं है। चूंकि Hadoop चक्रीय डेटा प्रवाह का समर्थन नहीं करता है (अर्थात चरणों की एक श्रृंखला जिसमें पिछले चरण का प्रत्येक आउटपुट अगले चरण का इनपुट होता है)।

समाधान:

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

अपाचे स्पार्क में, पुनरावृत्त प्रसंस्करण के लिए, प्रत्येक पुनरावृत्ति को अलग से निर्धारित और निष्पादित करना पड़ता है।

<एच4>एफ. विलंबता

Hadoop में MapReduce धीमा है क्योंकि यह विभिन्न प्रारूपों, संरचित और बड़ी मात्रा में डेटा का समर्थन करता है। MapReduce में, मानचित्र डेटा का एक सेट लेता है और इसे डेटा के दूसरे सेट में परिवर्तित करता है, जहां एक व्यक्तिगत तत्व एक कुंजी-मूल्य जोड़ी में टूट जाता है।

रिड्यूस मैप से आउटपुट लेता है और रिड्यूस मैप से आउटपुट को इनपुट के रूप में लेता है और आगे की प्रक्रिया करता है। MapReduce को इन कार्यों को करने के लिए बहुत समय की आवश्यकता होती है जिससे विलंबता बढ़ती है।

समाधान:

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

<एच4>जी. उपयोग में आसानी नहीं

Hadoop में MapReduce डेवलपर को प्रत्येक ऑपरेशन के लिए कोड सौंपने की आवश्यकता होती है जिससे काम करना बहुत मुश्किल हो जाता है। Hadoop में, MapReduce का कोई इंटरेक्टिव मोड नहीं है, लेकिन हाइव और पिग को जोड़ने से MapReduce के साथ काम करना थोड़ा आसान हो जाता है।

समाधान:

स्पार्क ने इस मुद्दे को दूर कर लिया है, क्योंकि स्पार्क में एक इंटरेक्टिव मोड है। ताकि, डेवलपर्स और उपयोगकर्ता समान रूप से प्रश्नों और अन्य गतिविधियों के लिए मध्यवर्ती प्रतिक्रिया प्राप्त कर सकें।

चूंकि स्पार्क में उच्च-स्तरीय ऑपरेटरों के टन हैं, इसलिए स्पार्क को प्रोग्राम करना आसान है। Apache Flink का भी उपयोग किया जा सकता है क्योंकि इसमें उच्च-स्तरीय ऑपरेटर भी होते हैं।

<एच4>एच. सुरक्षा समस्या

Apache Hadoop जटिल अनुप्रयोगों को बनाए रखने में चुनौतीपूर्ण है। Hadoop में स्टोरेज और नेटवर्क स्तर पर एन्क्रिप्शन की कमी है, जो एक प्रमुख चिंता का विषय है। Apache Hadoop Kerberos प्रमाणीकरण का समर्थन करता है, जिसे प्रबंधित करना कठिन है।

समाधान:

अपाचे स्पार्क सुरक्षा बोनस प्रदान करता है। यदि आप एचडीएफएस में अपाचे स्पार्क चलाते हैं, तो यह एचडीएफएस एसीएल और फ़ाइल स्तर की अनुमतियों का उपयोग कर सकता है।

मैं. स्वभाव से संवेदनशील

Apache Hadoop जावा में लिखा गया है। जावा सबसे लोकप्रिय भाषा है, इसलिए साइबर अपराधियों द्वारा जावा का सबसे अधिक शोषण किया जाता है।

जे. कोई कैशिंग नहीं

Apache Hadoop कैशिंग के लिए कुशल नहीं है। MapReduce आगे की आवश्यकता के लिए इंटरमीडिएट डेटा को मेमोरी में कैश नहीं कर सकता है और इससे Hadoop का प्रदर्शन कम हो जाता है।

समाधान:

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

<एच4>के. लंबा कोड

Apache Hadoop में 1,20,000 लाइन ऑफ कोड है। लाइनों की संख्या बग की संख्या पैदा करती है। इसलिए कार्यक्रमों को निष्पादित करने में अधिक समय लगेगा।

समाधान:

स्पार्क और फ्लिंक स्काला और जावा में लिखे गए हैं। लेकिन कार्यान्वयन स्काला में है, इसलिए कोड की लाइन की संख्या Hadoop से कम है। इस प्रकार, कार्यक्रमों को निष्पादित करने में कम समय लगता है।

निष्कर्ष

Hadoop की सीमा के परिणामस्वरूप, Spark और Flink की आवश्यकता उत्पन्न हुई। इस प्रकार, बड़ी मात्रा में डेटा के साथ खेलने के लिए सिस्टम को मित्रवत बनाएं।

अपाचे स्पार्क डेटा की इन-मेमोरी प्रोसेसिंग प्रदान करता है, इस प्रकार प्रसंस्करण गति में सुधार करता है। फ्लिंक प्रदर्शन में सुधार करता है क्योंकि यह स्ट्रीमिंग के साथ-साथ बैच प्रोसेसिंग के लिए सिंगल रन-टाइम प्रदान करता है।

स्पार्क सुरक्षा बोनस प्रदान करता है। इसलिए, अपाचे स्पार्क और फ्लिंक जैसी अन्य बड़ी डेटा तकनीकों का उपयोग करके इन सभी Hadoop सीमाओं को हल किया जा सकता है।

यदि आपको Hadoop की अन्य सीमाएँ मिलती हैं, तो कृपया नीचे दिए गए अनुभाग में एक टिप्पणी छोड़ कर हमें बताएं।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एमओबी के लिए अपाचे एचबेस के नए समर्थन के अंदर

  2. कैसे करें:Apache HBase REST इंटरफ़ेस का उपयोग करें, भाग 1

  3. कैसे करें:HBase बल्क लोडिंग का उपयोग करें, और क्यों

  4. कैसे करें:HBase थ्रिफ्ट इंटरफ़ेस का उपयोग करें, भाग 2:पंक्तियाँ सम्मिलित करना/प्राप्त करना

  5. Apache Hadoop आर्किटेक्चर - HDFS, YARN और MapReduce