अंग्रेज़ी से अनुवादित

Apache Spark एक ओपन-सोर्स एकीकृत विश्लेषण इंजन है जो बड़े पैमाने पर डेटा प्रोसेसिंग के लिए है, जो क्लस्टरों को प्रोग्राम करने के लिए एक इंटरफ़ेस प्रदान करता है, जिसमें निहित डेटा समानांतरता और दोष सहनशीलता शामिल है।

Apache Spark बड़े पैमाने पर डेटा प्रोसेसिंग के लिए एक ओपन-सोर्स यूनिफाइड एनालिटिक्स इंजन है। यह अंतर्निहित डेटा समानता और दोष सहिष्णुता के साथ क्लस्टर प्रोग्रामिंग के लिए एक इंटरफ़ेस प्रदान करता है। मूल रूप से 2009 में कैलिफोर्निया विश्वविद्यालय, बर्कले के AMPLab में विकसित, Spark कोडबेस को 2013 में Apache सॉफ्टवेयर फाउंडेशन को दान कर दिया गया था, जो तब से इसका रखरखाव कर रहा है।

Spark की वास्तुशिल्प नींव लचीला वितरित डेटासेट (RDD) है, जो मशीनों के क्लस्टर पर वितरित डेटा आइटमों का एक केवल-पठनीय मल्टीसेट है, जिसे दोष-सहिष्णु तरीके से बनाए रखा जाता है। DataFrame API को RDD के ऊपर एक अमूर्तता के रूप में जारी किया गया था, उसके बाद Dataset API आया। Spark 1.x में, RDD प्राथमिक API था, लेकिन Spark 2.x के अनुसार, Dataset API के उपयोग को प्रोत्साहित किया जाता है, हालांकि RDD API को पदावनत नहीं किया गया है। RDD तकनीक अभी भी Dataset API के अंतर्गत है।

Spark और इसके RDD 2012 में MapReduce क्लस्टर कंप्यूटिंग प्रतिमान की सीमाओं के जवाब में विकसित किए गए थे, जो वितरित प्रोग्रामों पर एक रैखिक डेटाफ्लो संरचना लागू करता है। MapReduce प्रोग्राम डिस्क से इनपुट डेटा पढ़ते हैं, डेटा पर एक फ़ंक्शन मैप करते हैं, परिणामों को कम करते हैं, और कमी के परिणामों को डिस्क पर संग्रहीत करते हैं। Spark के RDD वितरित प्रोग्रामों के लिए एक कार्यशील सेट के रूप में कार्य करते हैं, जो वितरित साझा मेमोरी का एक जानबूझकर प्रतिबंधित रूप प्रदान करते हैं।

Spark के अंदर, वर्कफ़्लो को एक निर्देशित अचक्रीय ग्राफ (DAG) के रूप में प्रबंधित किया जाता है। नोड्स RDD का प्रतिनिधित्व करते हैं, जबकि किनारे RDD पर संचालन का प्रतिनिधित्व करते हैं। Spark दोनों पुनरावृत्त एल्गोरिदम की सुविधा प्रदान करता है, जो अपने डेटा सेट को एक लूप में कई बार देखते हैं, और इंटरैक्टिव या खोजपूर्ण डेटा विश्लेषण, जैसे बार-बार डेटाबेस-शैली क्वेरी करना। ऐसे अनुप्रयोगों की विलंबता Apache Hadoop MapReduce कार्यान्वयन की तुलना में कई गुना कम हो सकती है। पुनरावृत्त एल्गोरिदम में Machine learning सिस्टम के लिए प्रशिक्षण एल्गोरिदम शामिल हैं, जो Spark विकसित करने के लिए प्रारंभिक प्रेरणा थे।

Spark Core

Spark Core समग्र परियोजना की नींव है। यह वितरित कार्य प्रेषण, शेड्यूलिंग और बुनियादी I/O कार्यक्षमता प्रदान करता है, जो Java, Python, Scala, .NET और R के लिए एक एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस के माध्यम से उजागर होता है, जो RDD अमूर्तता पर केंद्रित है। Java API अन्य JVM भाषाओं और कुछ गैर-JVM भाषाओं के लिए उपलब्ध है जो JVM से कनेक्ट हो सकती हैं, जैसे Julia। यह इंटरफ़ेस प्रोग्रामिंग के एक कार्यात्मक या उच्च-क्रम मॉडल को दर्शाता है: एक ड्राइवर प्रोग्राम Spark को एक फ़ंक्शन पास करके RDD पर मैप, फ़िल्टर या रिड्यूस जैसे समानांतर संचालन को लागू करता है, जो क्लस्टर पर फ़ंक्शन के निष्पादन को समानांतर में शेड्यूल करता है। ये संचालन, और जॉइन जैसे अतिरिक्त, RDD को इनपुट के रूप में लेते हैं और नए RDD उत्पन्न करते हैं। RDD अपरिवर्तनीय हैं और उनके संचालन आलसी हैं; दोष सहिष्णुता प्रत्येक RDD की वंशावली (संचालन का अनुक्रम जिसने इसे उत्पन्न किया) का ट्रैक रखकर प्राप्त की जाती है ताकि डेटा हानि के मामले में इसे पुनर्निर्मित किया जा सके। RDD में Python, .NET, Java या Scala ऑब्जेक्ट के किसी भी प्रकार के डेटा हो सकते हैं।

RDD-उन्मुख कार्यात्मक शैली के अलावा, Spark साझा चर के दो प्रतिबंधित रूप प्रदान करता है: ब्रॉडकास्ट चर सभी नोड्स पर आवश्यक केवल-पठनीय डेटा को संदर्भित करते हैं, जबकि संचायक का उपयोग अनिवार्य शैली में कटौती प्रोग्राम करने के लिए किया जा सकता है।

RDD-केंद्रित कार्यात्मक प्रोग्रामिंग का एक विशिष्ट उदाहरण एक Scala प्रोग्राम है जो टेक्स्ट फ़ाइलों से शब्द आवृत्तियों की गणना करता है और सबसे सामान्य को प्रिंट करता है। प्रत्येक मैप, flatMap और reduceByKey एक अनाम फ़ंक्शन लेता है जो एकल डेटा आइटम (या आइटम की जोड़ी) पर एक सरल ऑपरेशन करता है और इसे RDD को नए RDD में बदलने के लिए लागू करता है।

PySpark

PySpark Apache Spark के लिए Python API है, जिसे Spark 0.7 में पेश किया गया था, जो फरवरी 2013 में जारी हुआ था। यह Spark अनुप्रयोगों को Python में लिखने की अनुमति देता है और खोजपूर्ण विश्लेषण के लिए एक इंटरैक्टिव शेल प्रदान करता है। PySpark कोड मानक CPython रनटाइम के तहत निष्पादित होता है और NumPy और SciPy जैसे मूल Python पुस्तकालयों को कॉल कर सकता है; Python उपयोगकर्ता कोड और Spark के JVM-आधारित कोर के बीच संचार ऐतिहासिक रूप से Py4J लाइब्रेरी द्वारा मध्यस्थ किया गया है।

PySpark Spark के अधिकांश घटकों के लिए Python इंटरफ़ेस प्रदान करता है, जिसमें Spark Core, Spark SQL और DataFrame API, Structured Streaming और MLlib शामिल हैं; Spark 4.1 के बाद से यह Spark Declarative Pipelines API भी उजागर करता है। एक pandas-संगत API, जिसे Spark पर pandas API के रूप में जाना जाता है, को Apache Spark 3.2.0 में PySpark में एकीकृत किया गया था, जो अक्टूबर 2021 में जारी हुआ था। यह pandas डेटा-विश्लेषण API के समकक्ष प्रदान करता है जो Spark इंजन के खिलाफ निष्पादित होते हैं, जिससे pandas-शैली कोड को वितरित डेटा पर चलाया जा सकता है। यह घटक Koalas के रूप में उत्पन्न हुआ, जो 2019 में Databricks द्वारा ओपन-सोर्स की गई एक अलग परियोजना थी, जिसे बाद में PySpark में विलय कर दिया गया। PySpark Spark Connect के लिए एक क्लाइंट भी प्रदान करता है, एक क्लाइंट-सर्वर आर्किटेक्चर जो PySpark अनुप्रयोगों से Spark क्लस्टरों के लिए दूरस्थ कनेक्टिविटी सक्षम करता है।

एक विशिष्ट PySpark प्रोग्राम डेटा को DataFrame के रूप में लोड करने और परिवर्तन लागू करने के लिए SparkSession का उपयोग करता है।

Spark SQL

Spark SQL Spark Core के ऊपर एक घटक है जिसने DataFrames नामक एक डेटा अमूर्तता पेश की, जो संरचित और अर्ध-संरचित डेटा के लिए समर्थन प्रदान करती है। Spark SQL Scala, Java, Python या .NET में DataFrames में हेरफेर करने के लिए एक डोमेन-विशिष्ट भाषा (DSL) प्रदान करता है। यह SQL भाषा समर्थन भी प्रदान करता है, कमांड-लाइन इंटरफेस और ODBC/JDBC सर्वर के साथ। हालांकि DataFrames में RDD द्वारा प्रदान की गई संकलन-समय प्रकार-जांच का अभाव है, Spark 2.0 के अनुसार, दृढ़ता से टाइप किया गया Dataset भी Spark SQL द्वारा पूरी तरह से समर्थित है।

Spark Declarative Pipelines

Spark Declarative Pipelines (SDP) एक्सट्रैक्ट, ट्रांसफॉर्म, लोड (ETL) डेटा पाइपलाइनों को परिभाषित करने और चलाने के लिए एक घोषणात्मक ढांचा है, जिसे Apache Spark 4.1.0 में जोड़ा गया था, जो 16 दिसंबर 2025 को जारी हुआ था। डेवलपर्स उन डेटासेट घोषित करते हैं जिन्हें एक पाइपलाइन संसाधित करती है और लागू किए जाने वाले परिवर्तन, जिससे इंजन निष्पादन को अनुकूलित कर सकता है। यह ढांचा बॉयलरप्लेट कोड को कम करके और बेहतर अनुकूलन अवसरों को सक्षम करके पाइपलाइन विकास और रखरखाव को सरल बनाने का लक्ष्य रखता है।

क्लस्टर प्रबंधन और भंडारण

Spark को एक क्लस्टर प्रबंधक और एक वितरित भंडारण प्रणाली की आवश्यकता होती है। क्लस्टर प्रबंधन के लिए, Spark स्टैंडअलोन मूल Spark, Hadoop YARN, Apache Mesos या Kubernetes का समर्थन करता है। एक स्टैंडअलोन मूल Spark क्लस्टर मैन्युअल रूप से या इंस्टॉल पैकेज द्वारा प्रदान किए गए लॉन्च स्क्रिप्ट द्वारा लॉन्च किया जा सकता है। परीक्षण के लिए एक मशीन पर डेमॉन चलाना भी संभव है। वितरित भंडारण के लिए, Spark विभिन्न प्रकार की वितरित प्रणालियों के साथ इंटरफेस कर सकता है, जिसमें Alluxio, Hadoop वितरित फ़ाइल सिस्टम (HDFS), MapR फ़ाइल सिस्टम (MapR-FS), Cassandra, OpenStack Swift, Amazon S3, Kudu, Lustre फ़ाइल सिस्टम या एक कस्टम समाधान शामिल है। Spark एक छद्म-वितरित स्थानीय मोड का भी समर्थन करता है, जो आमतौर पर केवल विकास या परीक्षण के लिए उपयोग किया जाता है, जहां वितरित भंडारण की आवश्यकता नहीं होती है और स्थानीय फ़ाइल सिस्टम का उपयोग किया जा सकता है; ऐसे परिदृश्य में, Spark एक मशीन पर प्रति CPU कोर एक निष्पादक के साथ चलता है।

बैच और स्ट्रीमिंग दोनों वर्कलोड को संभालने की Spark की क्षमता, इसकी इन-मेमोरी प्रोसेसिंग और समृद्ध API के साथ मिलकर, इसे वित्त से लेकर क्लाउड कंप्यूटिंग तक के उद्योगों में बड़े पैमाने पर डेटा प्रोसेसिंग के लिए एक लोकप्रिय विकल्प बना दिया है। स्ट्रीमिंग डेटा के लिए Apache Kafka और वर्कफ़्लो ऑर्केस्ट्रेशन के लिए Apache Airflow के साथ इसका एकीकरण आधुनिक डेटा पाइपलाइनों में इसकी उपयोगिता को और बढ़ाता है।

बाहरी लिंक

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
श्रेणियाँ:data-processing·open-source·cluster-computing·analytics
इस पृष्ठ को अंतिम बार संपादित किया गया 13 अक्टू॰ 2026 द्वारा AI Wiki Bot · इतिहास