1. बुनियादी जानकारी - Google Dataproc
Dataproc, Apache Spark, Apache Flink, Presto, और कई अन्य ओपन सोर्स टूल और फ़्रेमवर्क को चलाने के लिए पूरी तरह से मैनेज की गई और बड़े पैमाने पर काम करने वाली सेवा है. डेटा लेक को आधुनिक बनाने, ETL / ELT, और ग्रह के स्तर पर डेटा साइंस को सुरक्षित करने के लिए, Dataproc का इस्तेमाल करें. Dataproc को Google Cloud की कई सेवाओं के साथ भी पूरी तरह से इंटिग्रेट किया गया है. इनमें BigQuery, Cloud Storage, Vertex AI, और Dataplex शामिल हैं.
Dataproc, तीन तरह के विकल्पों में उपलब्ध है:
- Dataproc सर्वरलेस, आपको इन्फ़्रास्ट्रक्चर और ऑटो स्केलिंग को कॉन्फ़िगर किए बिना PySpark जॉब चलाने की सुविधा देता है. Dataproc Serverless, PySpark बैच वर्कलोड और सेशन / नोटबुक के साथ काम करता है.
- Google Compute Engine पर डेटाproc की मदद से, Flink और Presto जैसे ओपन सोर्स टूल के साथ-साथ, YARN पर आधारित Spark वर्कलोड के लिए, Hadoop YARN क्लस्टर को मैनेज किया जा सकता है. क्लाउड-आधारित क्लस्टर में, ऑटो स्केलिंग की सुविधा के साथ-साथ वर्टिकल या हॉरिज़ॉन्टल स्केलिंग का इस्तेमाल किया जा सकता है.
- Google Kubernetes Engine पर डेटाproc की मदद से, अपने GKE (जीकेई) इन्फ़्रास्ट्रक्चर में Dataproc वर्चुअल क्लस्टर को कॉन्फ़िगर किया जा सकता है. ऐसा Spark, PySpark, SparkR या Spark SQL जॉब सबमिट करने के लिए किया जाता है.
2. Google Cloud VPC पर डेटाप्रॉक क्लस्टर बनाना
इस चरण में, Google Cloud Console का इस्तेमाल करके, Google Cloud पर Dataproc क्लस्टर बनाया जाएगा.
सबसे पहले, कंसोल पर Dataproc सर्विस एपीआई को चालू करें. इसके चालू होने के बाद, "Dataproc" को खोजें खोज बार में और क्लस्टर बनाएं क्लिक करें.
Dataproc क्लस्टर को चलाने के लिए, इन्फ़्रास्ट्रक्चर के तौर पर Google Compute Engine(GCE) वीएम का इस्तेमाल करने के लिए, Compute Engine पर क्लस्टर चुनें.
अब आप क्लस्टर बनाने वाले पेज पर हैं.
इस पेज पर:
- क्लस्टर को एक यूनीक नाम दें.
- कोई इलाका चुनें. हालांकि, आपके पास किसी ज़ोन को चुनने का भी विकल्प होता है. हालांकि, Dataproc आपके लिए किसी ज़ोन को अपने-आप चुनने की सुविधा देता है. इस कोडलैब के लिए, "us-central1" चुनें और "us-central1-c"..
- "मानक" चुनें क्लस्टर टाइप. इससे पक्का होता है कि एक मास्टर नोड मौजूद है.
- नोड कॉन्फ़िगर करें टैब में, पुष्टि करें कि बनाए गए वर्कर की संख्या दो होगी.
- क्लस्टर को पसंद के मुताबिक बनाएं सेक्शन में, कॉम्पोनेंट गेटवे चालू करें के बगल में मौजूद बॉक्स को चुनें. इससे क्लस्टर के वेब इंटरफ़ेस, जैसे कि Spark यूज़र इंटरफ़ेस (यूआई), यार्न नोड मैनेजर, और Jupyter notebook को ऐक्सेस किया जा सकता है.
- वैकल्पिक कॉम्पोनेंट में, Jupyter Notebook चुनें. इससे क्लस्टर को Jupyter notebook सर्वर के साथ कॉन्फ़िगर किया जाता है.
- बाकी सब कुछ वैसे ही रहने दें और क्लस्टर बनाएं पर क्लिक करें.
यह एक Dataproc क्लस्टर को स्पिन करेगा.
3. क्लस्टर और एसएसएच लॉन्च करें
जब क्लस्टर की स्थिति चल रहा है में बदल जाए, तो Dataproc कंसोल से क्लस्टर के नाम पर क्लिक करें.
मास्टर नोड और क्लस्टर के दो वर्कर नोड देखने के लिए, VM इंस्टेंस टैब पर क्लिक करें.
मास्टर नोड में लॉग इन करने के लिए, मास्टर नोड के बगल में मौजूद SSH पर क्लिक करें.
डायरेक्ट्री का स्ट्रक्चर देखने के लिए, hdfs कमांड चलाएं.
hadoop_commands_example
sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51
sudo hadoop fs -ls /
4. वेब इंटरफ़ेस और कॉम्पोनेंट गेटवे
Dataproc क्लस्टर कंसोल में, अपने क्लस्टर के नाम पर क्लिक करें. इसके बाद, वेब INTERFACES टैब पर क्लिक करें.
यह Jupyter के साथ-साथ उपलब्ध वेब इंटरफ़ेस दिखाता है. Jupyter notebook खोलने के लिए, Jupyter पर क्लिक करें. इसका इस्तेमाल, GCS (जीसीएस) पर सेव PySpark में नोटबुक बनाने के लिए किया जा सकता है. का इस्तेमाल करें.PySpark
5. स्पार्क जॉब को मॉनिटर और मॉनिटर करें
Dataproc क्लस्टर के चालू और चालू रहने के बाद, PySpark बैच जॉब बनाएं और जॉब को Dataproc क्लस्टर में सबमिट करें.
PySpark स्क्रिप्ट सेव करने के लिए, Google Cloud Storage (GCS) बकेट बनाएं. पक्का करें कि बकेट उसी क्षेत्र में बनाएं जिसमें Dataproc क्लस्टर है.
अब 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 .....")
इस स्क्रिप्ट को Dataproc में, स्पार्क बैच जॉब के तौर पर सबमिट करें. बाईं ओर दिए गए नेविगेशन मेन्यू में, नौकरियां पर क्लिक करें और फिर नौकरी सबमिट करें पर क्लिक करें
नौकरी का आईडी और क्षेत्र की जानकारी दें. अपना क्लस्टर चुनें और उस Spark स्क्रिप्ट का GCS की जगह की जानकारी दें जिसे आपने कॉपी किया है. यह जॉब, Dataproc पर स्पार्क बैच जॉब के तौर पर चलेगा.
प्रॉपर्टी में जाकर spark.submit.deployMode
कुंजी और वैल्यू client
जोड़ें, ताकि यह पक्का किया जा सके कि ड्राइवर, Dataproc मास्टर नोड में चलता है, वर्कर नोड में नहीं. Dataproc पर बैच जॉब सबमिट करने के लिए, सबमिट करें पर क्लिक करें.
स्पार्क स्क्रिप्ट, DataFrame बनाएगी और हाइव टेबल test_table_1
में लिख देगी.
काम पूरा होने के बाद, मॉनिटरिंग टैब में कंसोल प्रिंट स्टेटमेंट देखे जा सकते हैं.
अब जब Hive टेबल बन गई है, तो टेबल का कॉन्टेंट चुनने और कंसोल पर दिखाने के लिए, एक और Hive क्वेरी जॉब सबमिट करें.
इन प्रॉपर्टी के साथ एक और जॉब बनाएं:
ध्यान दें कि नौकरी का टाइप Hive पर सेट है और क्वेरी सोर्स टाइप Query Text है. इसका मतलब है कि हम पूरा HiveQL स्टेटमेंट क्वेरी टेक्स्ट टेक्स्टबॉक्स में लिखेंगे.
बाकी पैरामीटर को डिफ़ॉल्ट के तौर पर रखते हुए, जॉब सबमिट करें.
ध्यान दें कि HiveQL, कंसोल पर सभी रिकॉर्ड को कैसे चुनता है और दिखाता है.
6. ऑटो स्केलिंग
ऑटो स्केलिंग, "सही" का अनुमान लगाने का काम है वर्कलोड के लिए, क्लस्टर वर्कर नोड की संख्या.
Dataproc AutoscalingPolicy API पर, क्लस्टर के संसाधन को अपने-आप मैनेज करने की सुविधा मिलती है. साथ ही, यह क्लस्टर वर्कर वीएम ऑटो स्केलिंग की सुविधा को चालू करता है. ऑटो स्केलिंग नीति, फिर से इस्तेमाल किया जा सकने वाला कॉन्फ़िगरेशन है. इसमें बताया गया है कि ऑटो स्केलिंग नीति का इस्तेमाल करने वाले क्लस्टर वर्कर को किस तरह स्केल करना चाहिए. यह क्लस्टर के लाइफ़टाइम के दौरान, क्लस्टर के संसाधनों पर बारीकी से कंट्रोल देने के लिए, स्केलिंग की सीमाएं, फ़्रीक्वेंसी, और एग्रेसिविटी तय करता है.
Dataproc ऑटो स्केलिंग नीतियों को YAML फ़ाइलों का इस्तेमाल करके लिखा जाता है और ये YAML फ़ाइलों को क्लस्टर बनाने के लिए CLI निर्देश में पास किया जाता है या Cloud Console से क्लस्टर बनाए जाते समय GCS बकेट से चुना जाता है.
यहां Dataproc ऑटो स्केलिंग नीति का एक उदाहरण दिया गया है :
policy.yaml
workerConfig:
minInstances: 10
maxInstances: 10
secondaryWorkerConfig:
maxInstances: 50
basicAlgorithm:
cooldownPeriod: 4m
yarnConfig:
scaleUpFactor: 0.05
scaleDownFactor: 1.0
gracefulDecommissionTimeout: 1h
7. Dataproc वैकल्पिक कॉम्पोनेंट कॉन्फ़िगर करें
यह एक Dataproc क्लस्टर को स्पिन करेगा.
जब Dataproc क्लस्टर बनाया जाता है, तब क्लस्टर पर स्टैंडर्ड Apache Hadoop नेटवर्क कॉम्पोनेंट अपने-आप इंस्टॉल हो जाते हैं. (Dataproc वर्शन की सूची देखें). क्लस्टर बनाते समय, क्लस्टर पर वैकल्पिक कॉम्पोनेंट नाम के अतिरिक्त कॉम्पोनेंट इंस्टॉल किए जा सकते हैं.
कंसोल से Dataproc क्लस्टर बनाते समय, हमने वैकल्पिक कॉम्पोनेंट को चालू कर दिया है और Jupyter Notebook को वैकल्पिक कॉम्पोनेंट के तौर पर चुना है.
8. संसाधनों का इस्तेमाल करना
क्लस्टर का स्टोरेज खाली करने के लिए, Dataproc कंसोल से क्लस्टर चुनने के बाद, बंद करें पर क्लिक करें. क्लस्टर के बंद हो जाने पर, क्लस्टर को मिटाने के लिए, मिटाएं पर क्लिक करें.
Dataproc क्लस्टर को मिटाने के बाद, उन GCS बकेट को मिटाएं जहां कोड को कॉपी किया गया था.
संसाधनों को खाली करने और किसी भी अनचाही बिलिंग को रोकने के लिए, Dataproc क्लस्टर को पहले बंद करना होगा और फिर उसे मिटाना होगा.
क्लस्टर को रोकने और मिटाने से पहले, पक्का करें कि HDFS स्टोरेज में लिखा गया सारा डेटा, लंबे समय तक स्टोरेज में बनाए रखने के लिए GCS (जीसीएस) पर कॉपी किया गया हो.
क्लस्टर को बंद करने के लिए, बंद करें पर क्लिक करें.
क्लस्टर के बंद हो जाने पर, क्लस्टर को मिटाने के लिए, मिटाएं पर क्लिक करें.
क्लस्टर मिटाने के लिए, पुष्टि करने वाले डायलॉग बॉक्स में, मिटाएं पर क्लिक करें.