1. जानकारी - Managed Service for Apache Spark
Managed Service for Apache Spark, Apache Spark, Apache Flink, Presto, और कई अन्य ओपन सोर्स टूल और फ़्रेमवर्क को चलाने के लिए, पूरी तरह से मैनेज की जाने वाली और बड़े पैमाने पर इस्तेमाल की जा सकने वाली सेवा है. डेटा लेक को बेहतर बनाने, ईटीएल / ईएलटी, और सुरक्षित डेटा साइंस के लिए, Managed Service for Apache Spark का इस्तेमाल करें. Managed Service for Apache Spark, Google Cloud की कई सेवाओं के साथ पूरी तरह से इंटिग्रेट किया गया है. इनमें BigQuery, Cloud Storage, Gemini Enterprise Agent Engine, और Knowledge Catalog शामिल हैं.
Managed Service for Apache Spark, दो डिप्लॉयमेंट मोड में उपलब्ध है:
- Managed Apache Spark serverless की मदद से, PySpark जॉब को चलाया जा सकता है. इसके लिए, इंफ़्रास्ट्रक्चर और ऑटो स्केलिंग को कॉन्फ़िगर करने की ज़रूरत नहीं होती. Managed Apache Spark, PySpark बैच वर्कलोड और सेशन / नोटबुक के साथ काम करता है.
- Managed Apache Spark क्लस्टर की मदद से, Hadoop YARN क्लस्टर को मैनेज किया जा सकता है. इसके अलावा, Flink और Presto जैसे ओपन सोर्स टूल का इस्तेमाल करके, YARN पर आधारित Spark वर्कलोड को भी मैनेज किया जा सकता है. क्लाउड पर आधारित क्लस्टर को, वर्टिकल या हॉरिज़ॉन्टल स्केलिंग के हिसाब से बनाया जा सकता है. इसमें ऑटो स्केलिंग भी शामिल है.
2. Google Cloud VPC पर Managed Apache Spark क्लस्टर बनाना
इस चरण में, Google Cloud console का इस्तेमाल करके, Google Cloud पर Managed Apache Spark क्लस्टर बनाया जाएगा.
सबसे पहले, कंसोल पर Managed Apache Spark सेवा का एपीआई चालू करें. एपीआई चालू होने के बाद, खोज बार में "Managed Apache Spark" खोजें और क्लस्टर बनाएं पर क्लिक करें.
Managed Apache Spark क्लस्टर चलाने के लिए, Google Compute Engine(GCE) वीएम को बुनियादी इंफ़्रास्ट्रक्चर के तौर पर इस्तेमाल करने के लिए, Compute Engine पर क्लस्टर चुनें.

अब आपके लिए क्लस्टर बनाने का पेज खुल जाएगा.

इस पेज पर:
- क्लस्टर के लिए कोई यूनीक नाम दें.
- कोई खास इलाका चुनें. ज़ोन भी चुना जा सकता है. हालांकि, Managed Apache Spark में आपके लिए अपने-आप ज़ोन चुनने की सुविधा होती है. इस कोडलैब के लिए, "us-central1" और "us-central1-c" चुनें.
- "स्टैंडर्ड" क्लस्टर टाइप चुनें. इससे पक्का होता है कि एक मास्टर नोड मौजूद है.
- नोड कॉन्फ़िगर करें टैब में, पुष्टि करें कि बनाए जाने वाले वर्कर की संख्या दो होगी.
- क्लस्टर को पसंद के मुताबिक बनाएं सेक्शन में, कॉम्पोनेंट गेटवे चालू करें के बगल में मौजूद बॉक्स पर सही का निशान लगाएं. इससे क्लस्टर पर वेब इंटरफ़ेस का ऐक्सेस मिलता है. इनमें Spark यूज़र इंटरफ़ेस (यूआई), Yarn Node Manager, और Jupyter नोटबुक शामिल हैं.
- ज़रूरी नहीं कॉम्पोनेंट में, Jupyter Notebook चुनें. इससे क्लस्टर को Jupyter notebook सर्वर के साथ कॉन्फ़िगर किया जाता है.
- बाकी सेटिंग में कोई बदलाव न करें और क्लस्टर बनाएं पर क्लिक करें.
इससे Managed Apache Spark क्लस्टर शुरू हो जाएगा.
3. क्लस्टर लॉन्च करना और उसमें एसएसएच के ज़रिए लॉग इन करना
क्लस्टर की स्थिति चालू है में बदलने के बाद, Managed Apache Spark कंसोल में जाकर, क्लस्टर के नाम पर क्लिक करें.

क्लस्टर के मास्टर नोड और दो वर्कर नोड देखने के लिए, वीएम इंस्टेंस टैब पर क्लिक करें.

मास्टर नोड में लॉग इन करने के लिए, मास्टर नोड के बगल में मौजूद SSH पर क्लिक करें.

डायरेक्ट्री का स्ट्रक्चर देखने के लिए, hdfs कमांड चलाएं.
hadoop_commands_example
sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51
sudo hadoop fs -ls /
4. वेब इंटरफ़ेस और कॉम्पोनेंट गेटवे
Managed Apache Spark क्लस्टर कंसोल में जाकर, अपने क्लस्टर के नाम पर क्लिक करें. इसके बाद, वेब इंटरफ़ेस टैब पर क्लिक करें.

इससे उपलब्ध वेब इंटरफ़ेस दिखते हैं. इनमें Jupyter भी शामिल है. Jupyter नोटबुक खोलने के लिए, Jupyter पर क्लिक करें. इसका इस्तेमाल, GCS पर सेव की गई PySpark में नोटबुक बनाने के लिए किया जा सकता है. इस कोडलैब में इस्तेमाल करने के लिए, अपनी नोटबुक को Google Cloud Storage पर सेव करें और PySpark नोटबुक खोलें.
5. Spark जॉब की निगरानी करना और उन्हें देखना
Managed Apache Spark क्लस्टर चालू होने के बाद, PySpark बैच जॉब बनाएं और उसे Managed Apache Spark क्लस्टर में सबमिट करें.
PySpark स्क्रिप्ट को सेव करने के लिए, Google Cloud Storage (GCS) बकेट बनाएं. पक्का करें कि बकेट, Managed Apache Spark क्लस्टर वाले इलाके में ही बनाई गई हो.

GCS बकेट बन जाने के बाद, इस बकेट में यह फ़ाइल कॉपी करें.
https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py
यह स्क्रिप्ट, Spark DataFrame का एक सैंपल बनाती है और उसे Hive टेबल के तौर पर लिखती है.
hive_job.py
from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row
spark = SparkSession.builder.master("local").enableHiveSupport().getOrCreate()
df = spark.createDataFrame([ (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
(2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)), (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
], schema='a long, b double, c string, d date, e timestamp')
print("..... Writing data .....")
df.write.mode("overwrite").saveAsTable("test_table_1")
print("..... Complete .....")
इस स्क्रिप्ट को, Managed Apache Spark में Spark बैच जॉब के तौर पर सबमिट करें. बाईं ओर दिए गए नेविगेशन मेन्यू में, जॉब पर क्लिक करें. इसके बाद, जॉब सबमिट करें पर क्लिक करें

जॉब आईडी और इलाका डालें. अपना क्लस्टर चुनें और कॉपी की गई Spark स्क्रिप्ट की GCS लोकेशन डालें. यह जॉब, Managed Apache Spark पर Spark बैच जॉब के तौर पर चलेगी.
प्रॉपर्टी में, spark.submit.deployMode कुंजी और client वैल्यू जोड़ें. इससे यह पक्का होगा कि ड्राइवर, Managed Apache Spark मास्टर नोड में चलेगा, न कि वर्कर नोड में. बैच जॉब को Managed Apache Spark में सबमिट करने के लिए, सबमिट करें पर क्लिक करें.

Spark स्क्रिप्ट, Dataframe बनाएगी और उसे Hive टेबल test_table_1 में लिखेगी.
जॉब के सही तरीके से चलने के बाद, मॉनिटरिंग टैब में कंसोल प्रिंट स्टेटमेंट देखे जा सकते हैं.

Hive टेबल बन जाने के बाद, Hive की एक और क्वेरी जॉब सबमिट करें. इससे टेबल का कॉन्टेंट चुना जाएगा और कंसोल पर दिखेगा.
इन प्रॉपर्टी के साथ एक और जॉब बनाएं:

ध्यान दें कि जॉब टाइप को Hive पर सेट किया गया है और क्वेरी सोर्स टाइप क्वेरी टेक्स्ट है. इसका मतलब है कि हम पूरा HiveQL स्टेटमेंट, क्वेरी टेक्स्ट टेक्स्टबॉक्स में लिखेंगे.
बाकी पैरामीटर को डिफ़ॉल्ट पर रखते हुए, जॉब सबमिट करें.

ध्यान दें कि HiveQL, सभी रिकॉर्ड चुनता है और उन्हें कंसोल पर दिखाता है.
6. ऑटो स्केलिंग
ऑटो स्केलिंग, किसी वर्कलोड के लिए क्लस्टर वर्कर नोड की "सही" संख्या का अनुमान लगाने का टास्क है.
Managed Apache Spark AutoscalingPolicies API, क्लस्टर रिसॉर्स मैनेजमेंट को ऑटोमेट करने का एक तरीका उपलब्ध कराता है. साथ ही, क्लस्टर वर्कर वीएम की ऑटो स्केलिंग की सुविधा देता है. ऑटो स्केलिंग की नीति, एक रीयूज़ की जा सकने वाली कॉन्फ़िगरेशन है. इसमें बताया जाता है कि ऑटो स्केलिंग की नीति का इस्तेमाल करने वाले क्लस्टर वर्कर को कैसे स्केल किया जाना चाहिए. यह नीति, क्लस्टर के चालू रहने तक, क्लस्टर के रिसॉर्स पर बेहतर कंट्रोल पाने के लिए, स्केलिंग की सीमाएं, फ़्रीक्वेंसी, और एग्रेसिवनेस तय करती है.
Managed Apache Spark की ऑटो स्केलिंग नीतियां, YAML फ़ाइलों का इस्तेमाल करके लिखी जाती हैं. इन YAML फ़ाइलों को, क्लस्टर बनाने के लिए सीएलआई कमांड में पास किया जाता है. इसके अलावा, Cloud Console से क्लस्टर बनाते समय, इन्हें GCS बकेट से चुना जाता है.
यहां Managed Apache Spark की ऑटो स्केलिंग नीति का एक उदाहरण दिया गया है :
policy.yaml
workerConfig:
minInstances: 10
maxInstances: 10
secondaryWorkerConfig:
maxInstances: 50
basicAlgorithm:
cooldownPeriod: 4m
yarnConfig:
scaleUpFactor: 0.05
scaleDownFactor: 1.0
gracefulDecommissionTimeout: 1h
7. Managed Apache Spark के ज़रूरी नहीं कॉम्पोनेंट कॉन्फ़िगर करना
इससे Managed Apache Spark क्लस्टर शुरू हो जाएगा.
Managed Apache Spark क्लस्टर बनाने पर, Apache Hadoop इकोसिस्टम के स्टैंडर्ड कॉम्पोनेंट, क्लस्टर पर अपने-आप इंस्टॉल हो जाते हैं. Managed Apache Spark के वर्शन की सूची देखें. क्लस्टर बनाते समय, ज़रूरी नहीं कॉम्पोनेंट नाम के अतिरिक्त कॉम्पोनेंट इंस्टॉल किए जा सकते हैं.

कंसोल से Managed Apache Spark क्लस्टर बनाते समय, हमने ज़रूरी नहीं कॉम्पोनेंट चालू किए हैं और Jupyter Notebook को ज़रूरी नहीं कॉम्पोनेंट के तौर पर चुना है.
8. संसाधन साफ़ करना
क्लस्टर को साफ़ करने के लिए, Managed Apache Spark कंसोल से क्लस्टर चुनने के बाद, बंद करें पर क्लिक करें. क्लस्टर बंद होने के बाद, उसे मिटाने के लिए मिटाएं पर क्लिक करें.
Managed Apache Spark क्लस्टर मिटाने के बाद, उन GCS बकेट को मिटाएं जिनमें कोड कॉपी किया गया था.
संसाधन साफ़ करने और अनचाहे बिलिंग को रोकने के लिए, Managed Apache Spark क्लस्टर को पहले बंद करना होगा और फिर मिटाना होगा.
क्लस्टर को बंद करने और मिटाने से पहले, पक्का करें कि HDFS स्टोरेज में लिखा गया सारा डेटा, स्थायी स्टोरेज के लिए GCS में कॉपी कर लिया गया हो.
क्लस्टर को बंद करने के लिए, बंद करें पर क्लिक करें.

क्लस्टर बंद होने के बाद, उसे मिटाने के लिए मिटाएं पर क्लिक करें.
पुष्टि करने वाले डायलॉग पर, क्लस्टर को मिटाने के लिए मिटाएं पर क्लिक करें.
