Spark SQL Kya Hai

उद्योग अपने डेटा सेट का विश्लेषण करने के लिए Hadoop का बड़े पैमाने पर उपयोग कर रहे हैं. कारण यह है कि Hadoop फ्रेमवर्क एक सरल प्रोग्रामिंग मॉडल MapReduce पर आधारित है और यह एक कंप्यूटिंग समाधान को सक्षम करता है जो स्केलेबल, लचीला, दोष-सहिष्णु और लागत प्रभावी है. यहां, प्रश्नों को चलाने और कार्यक्रम को चलाने के लिए प्रतीक्षा समय के बीच बड़े डेटासेट को संसाधित करने में गति बनाए रखना मुख्य चिंता है.

स्पार्क को अपाचे सॉफ्टवेयर फाउंडेशन द्वारा हडोप कम्प्यूट कम्प्यूटिंग सॉफ्टवेयर प्रक्रिया में तेजी लाने के लिए पेश किया गया था.

एक आम धारणा के विपरीत स्पार्क Hadoop का संशोधित संस्करण नहीं है और वास्तव में Hadoop पर निर्भर नहीं है क्योंकि इसका अपना क्लस्टर प्रबंधन है. हाडोप स्पार्क को लागू करने के तरीकों में से एक है.

स्पार्क दो तरीकों से Hadoop का उपयोग करता है एक भंडारण है और दूसरा प्रसंस्करण है. चूंकि स्पार्क की अपनी क्लस्टर प्रबंधन संगणना है इसलिए यह स्टोरेज के उद्देश्य के लिए Hadoop का उपयोग करता है.

Apache Spark

अपाचे स्पार्क एक लाइटनिंग-फास्ट क्लस्टर कंप्यूटिंग तकनीक है जिसे तेज गणना के लिए डिज़ाइन किया गया है. यह Hadoop MapReduce पर आधारित है और यह MapReduce मॉडल को कुशलता से अधिक प्रकार की गणनाओं के लिए उपयोग करने के लिए विस्तारित करता है जिसमें इंटरैक्टिव क्वेरी और स्ट्रीम प्रोसेसिंग शामिल है. स्पार्क की मुख्य विशेषता इसकी इन-मेमोरी क्लस्टर कंप्यूटिंग है जो किसी एप्लिकेशन की प्रोसेसिंग गति को बढ़ाती है.

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

Evolution of Apache Spark

स्पार्क, हाडोप की उप परियोजना में से एक है जो 2009 में माटी ज़हरिया द्वारा यूसी बर्कले के एएमपीलैब में विकसित की गई थी. यह 2010 में बीएसडी लाइसेंस के तहत ओपन सोर्ड था. यह 2013 में अपाचे सॉफ्टवेयर फाउंडेशन को दान कर दिया गया था और अब Apache Spark फरवरी 2014 से एक शीर्ष स्तर की अपाचे परियोजना बन गई है.

Features of Apache Spark

अपाचे स्पार्क में निम्नलिखित विशेषताएं हैं-

Speed

स्पार्क Hadoop क्लस्टर में एक एप्लिकेशन को चलाने में मदद करता है मेमोरी में 100 गुना तेज और डिस्क पर चलने पर 10 गुना तेज. डिस्क पर पढ़ने लिखने की संख्या को कम करके यह संभव है. यह इंटरमीडिएट प्रोसेसिंग डाटा को मेमोरी में स्टोर करता है.

Supports Multiple Languages

स्पार्क जावा, स्काला, या पायथन में अंतर्निहित एपीआई प्रदान करता है. इसलिए आप विभिन्न भाषाओं में एप्लिकेशन लिख सकते हैं. स्पार्क इंटरएक्टिव क्वेरी के लिए 80 उच्च-स्तरीय ऑपरेटरों के साथ आता है.

Advanced Analytics

स्पार्क न केवल 'मैप' और 'कम' का समर्थन करता है. यह SQL क्वेरी, स्ट्रीमिंग डेटा, मशीन लर्निंग और ग्राफ़ एल्गोरिदम का भी समर्थन करता है.

Spark Built on Hadoop

नीचे बताया गया स्पार्क तैनाती के तीन तरीके हैं -

Standalone

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

Hadoop Yarn

Hadoop यार्न की तैनाती का मतलब है, बस, स्पार्क यार्न पर बिना किसी पूर्व-इंस्टॉलेशन या रूट एक्सेस की आवश्यकता के चलता है. यह स्पार्क को Hadoop इकोसिस्टम या Hadoop स्टैक में एकीकृत करने में मदद करता है. यह अन्य घटकों को स्टैक के शीर्ष पर चलने की अनुमति देता है.

Spark in MapReduce

MapReduce में स्पार्क का उपयोग स्वसंपूर्ण तैनाती के अलावा स्पार्क जॉब को लॉन्च करने के लिए किया जाता है. SIMR के साथ उपयोगकर्ता स्पार्क शुरू कर सकता है और बिना किसी प्रशासनिक पहुंच के इसके शेल का उपयोग कर सकता है.

Components of Spark

निम्नलिखित दृष्टांत स्पार्क के विभिन्न घटकों को दर्शाते हैं -

Apache Spark Core

स्पार्क कोर स्पार्क प्लेटफॉर्म के लिए अंतर्निहित सामान्य निष्पादन इंजन है जो अन्य सभी कार्यक्षमता पर बनाया गया है. यह बाहरी मेमोरी सिस्टम में इन-मेमोरी कंप्यूटिंग और रेफरेंसिंग डेटासेट प्रदान करता है.

Spark SQL

स्पार्क एसक्यूएल स्पार्क कोर के शीर्ष पर एक घटक है जो स्कीमाआरडीडी नामक एक नया डेटा एब्स्ट्रैक्शन पेश करता है जो संरचित और अर्ध-संरचित डेटा के लिए समर्थन प्रदान करता है.

Spark Streaming

स्पार्क स्ट्रीमिंग, स्ट्रीमिंग एनालिटिक्स प्रदर्शन करने के लिए स्पार्क कोर की तीव्र समय-निर्धारण क्षमता का लाभ उठाती है. यह मिनी-बैचों में डेटा को सम्मिलित करता है और डेटा के उन मिनी-बैचों पर लचीला वितरित डेटासेट परिवर्तनों को निष्पादित करता है.

Machine Learning Library

मशीन लर्निंग लाइब्रेरी वितरित मेमोरी-आधारित स्पार्क वास्तुकला के कारण स्पार्क के ऊपर एक वितरित मशीन लर्निंग फ्रेमवर्क है. यह बेंचमार्क के अनुसार, एमएलबी डेवलपर्स द्वारा अल्टरनेटिंग लिस्ट स्क्वॉयर के कार्यान्वयन के खिलाफ किया जाता है. स्पार्क MLlib महतो द्वारा स्पार्क इंटरफ़ेस प्राप्त करने से पहले Apache Mahout के Hadoop डिस्क-आधारित संस्करण के रूप में नौ गुना तेज़ है.

GraphX

ग्राफएक्स स्पार्क के शीर्ष पर एक वितरित ग्राफ-प्रोसेसिंग फ्रेमवर्क है. यह ग्राफ संगणना को व्यक्त करने के लिए एक एपीआई प्रदान करता है जो Pregel abstraction API का उपयोग करके उपयोगकर्ता-परिभाषित ग्राफ़ को मॉडल कर सकता है. यह इस अमूर्त के लिए एक अनुकूलित रनटाइम भी प्रदान करता है.

Spark Resilient Distributed Datasets

Resilient Distributed Datasets स्पार्क की एक मूलभूत डेटा संरचना है. यह वस्तुओं का एक अपरिवर्तित वितरित संग्रह है. RDD में प्रत्येक डेटासेट को तार्किक विभाजन में विभाजित किया गया है जिसे क्लस्टर के विभिन्न नोड्स पर गणना की जा सकती है. RDD में उपयोगकर्ता-परिभाषित कक्षाओं सहित किसी भी प्रकार के पायथन, जावा या स्काला ऑब्जेक्ट शामिल हो सकते हैं.

औपचारिक रूप से एक RDD एक केवल पढ़ने के लिए, रिकॉर्ड्स का विभाजन है. RDD को स्थिर भंडारण या अन्य RDD पर डेटा पर नियतात्मक संचालन के माध्यम से बनाया जा सकता है. RDD तत्वों का एक दोष-सहिष्णु संग्रह है जिसे समानांतर में संचालित किया जा सकता है.

RDD बनाने के दो तरीके हैं आपके ड्राइवर प्रोग्राम में मौजूदा संग्रह को समानांतर बनाना या एक बाहरी स्टोरेज सिस्टम में डेटासेट का संदर्भ देना जैसे कि साझा फ़ाइल सिस्टम, HDFS, HBase, या Hadoop Input Format की पेशकश करने वाला कोई डेटा स्रोत.

स्पार्क RDD की अवधारणा का उपयोग तेज और कुशल MapReduce संचालन को प्राप्त करने के लिए करता है. चलिए पहले चर्चा करते हैं कि MapReduce के संचालन कैसे होते हैं और वे इतने कुशल क्यों नहीं हैं.

Data Sharing is Slow in MapReduce

MapReduce व्यापक रूप से एक क्लस्टर पर समानांतर, वितरित एल्गोरिदम के साथ बड़े डेटासेट को संसाधित करने और उत्पन्न करने के लिए अपनाया जाता है. यह उपयोगकर्ताओं को काम वितरण और गलती सहिष्णुता के बारे में चिंता किए बिना, उच्च-स्तरीय ऑपरेटरों के एक सेट का उपयोग करके समानांतर संगणना लिखने की अनुमति देता है.

दुर्भाग्य से, अधिकांश वर्तमान चौखटे में दो MapReduce नौकरियों के बीच अभिकलन के बीच डेटा का पुन: उपयोग करने का एकमात्र तरीका इसे बाहरी स्थिर भंडारण प्रणाली में लिखना है. हालाँकि यह ढांचा क्लस्टर के कम्प्यूटेशनल संसाधनों तक पहुँचने के लिए कई सार प्रदान करता है फिर भी उपयोगकर्ता अधिक चाहते हैं.

दोनों समानांतर और पारस्परिक अनुप्रयोगों को समानांतर नौकरियों में तेजी से डेटा साझा करने की आवश्यकता होती है. प्रतिकृति, क्रमांकन और डिस्क IO के कारण MapReduce में डेटा साझाकरण धीमा है. स्टोरेज सिस्टम के बारे में अधिकांश हडॉप एप्लिकेशन वे HDFS पढ़ने-लिखने के संचालन में 90% से अधिक समय बिताते हैं.

Iterative Operations on MapReduce

बहु-चरण अनुप्रयोगों में कई संगणना के बीच पुन: उपयोग के मध्यवर्ती परिणाम. निम्न चित्रण यह बताता है कि MapReduce पर पुनरावृत्त संचालन करते समय वर्तमान रूपरेखा कैसे काम करती है. डेटा प्रतिकृति डिस्क I / O और क्रमांकन के कारण यह पर्याप्त ओवरहेड हो जाता है जिससे सिस्टम धीमा हो जाता है.

Data Sharing using Spark RDD

प्रतिकृति क्रमांकन और डिस्क IO के कारण MapReduce में डेटा साझाकरण धीमा है. Hadoop के अधिकांश एप्लिकेशन वे HDFS पढ़ने-लिखने के संचालन में 90% से अधिक समय बिताते हैं.

इस समस्या को स्वीकार करते हुए शोधकर्ताओं ने अपाचे स्पार्क नामक एक विशेष रूपरेखा विकसित की. Spark का मुख्य विचार Flexible डिस्ट्रीब्यूटेड डेटासेट्स है जो इन-मेमोरी प्रोसेसिंग कम्प्यूटेशन का समर्थन करता है. इसका मतलब है यह नौकरियों में एक ऑब्जेक्ट के रूप में मेमोरी की स्थिति को संग्रहीत करता है और उन नौकरियों के बीच ऑब्जेक्ट को साझा करना है. नेटवर्क और डिस्क की तुलना में मेमोरी में डेटा शेयरिंग 10 से 100 गुना तेज है.