Cloud Dataflow में बिग डेटा टेक्स्ट प्रोसेसिंग पाइपलाइन चलाएं

1. खास जानकारी

Cloud-Dataflow.png

डेटाफ़्लो क्या है?

Dataflow, मैनेज की गई एक सेवा है. इसकी मदद से, डेटा प्रोसेसिंग के अलग-अलग पैटर्न को लागू किया जा सकता है. इस साइट पर मौजूद दस्तावेज़ में बताया गया है कि Dataflow का इस्तेमाल करके, बैच और स्ट्रीमिंग डेटा प्रोसेसिंग पाइपलाइन कैसे डिप्लॉय की जाती हैं. इसमें सेवा की सुविधाओं को इस्तेमाल करने के निर्देश भी शामिल हैं.

Apache Beam SDK, ओपन सोर्स प्रोग्रामिंग मॉडल है. इसकी मदद से, बैच और स्ट्रीमिंग, दोनों तरह की पाइपलाइन डेवलप की जा सकती हैं. Apache Beam प्रोग्राम की मदद से पाइपलाइन बनाई जाती हैं. इसके बाद, उन्हें Dataflow सेवा पर चलाया जाता है. Apache Beam के दस्तावेज़ में, Apache Beam प्रोग्रामिंग मॉडल, एसडीके, और अन्य रनर के बारे में पूरी जानकारी और रेफ़रंस मटीरियल दिया गया है.

तेज़ी से स्ट्रीमिंग डेटा का विश्लेषण करना

Dataflow की मदद से, स्ट्रीमिंग डेटा पाइपलाइन को तेज़ी से और आसानी से डेवलप किया जा सकता है. साथ ही, डेटा को प्रोसेस होने में कम समय लगता है.

ऑपरेशन और मैनेजमेंट को आसान बनाना

टीमों को सर्वर क्लस्टर मैनेज करने के बजाय प्रोग्रामिंग पर फ़ोकस करने की अनुमति दें, क्योंकि Dataflow के सर्वरलेस अप्रोच से डेटा इंजीनियरिंग के वर्कलोड से ऑपरेशनल ओवरहेड हट जाता है.

टोटल कॉस्ट ऑफ़ ओनरशिप कम करना

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

मुख्य सुविधाएं

अपने-आप संसाधन मैनेज होने और काम के हिसाब से कर्मचारियों को असाइन होने की सुविधा

Dataflow, प्रोसेसिंग संसाधनों को अपने-आप उपलब्ध कराता है और उन्हें मैनेज करता है, ताकि कम से कम समय में ज़्यादा से ज़्यादा काम किया जा सके. इससे आपको इंस्टेंस शुरू करने या उन्हें मैन्युअल तरीके से रिज़र्व करने की ज़रूरत नहीं पड़ती. काम को बांटने की प्रोसेस भी अपने-आप होती है. साथ ही, इसे ऑप्टिमाइज़ किया जाता है, ताकि काम को डाइनैमिक तरीके से फिर से बैलेंस किया जा सके. आपको "हॉट की" ढूंढने या इनपुट डेटा को पहले से प्रोसेस करने की ज़रूरत नहीं है.

हॉरिज़ॉन्टल ऑटोस्केलिंग

वर्कलोड को मैनेज करने वाले रिसॉर्स की हॉरिज़ॉन्टल ऑटोस्केलिंग से, थ्रूपुट के बेहतर नतीजे मिलते हैं. इससे, कीमत के हिसाब से बेहतर परफ़ॉर्मेंस मिलती है.

बैच प्रोसेसिंग के लिए, संसाधन की शेड्यूलिंग की सुविधा के हिसाब से तय की गई कीमत

जॉब शेड्यूल करने के समय में फ़्लेक्सिबिलिटी के साथ प्रोसेसिंग करने के लिए, जैसे कि रात भर चलने वाले जॉब, फ़्लेक्सिबल रिसोर्स शेड्यूलिंग (FlexRS) बैच प्रोसेसिंग के लिए कम कीमत ऑफ़र करता है. इन फ़्लेक्सिबल जॉब को एक कतार में रखा जाता है. साथ ही, यह गारंटी दी जाती है कि इन्हें छह घंटे के अंदर प्रोसेस किया जाएगा.

यह ट्यूटोरियल, https://cloud.google.com/dataflow/docs/quickstarts/quickstart-java-maven से लिया गया है

आपको क्या सीखने को मिलेगा

  • Java SDK का इस्तेमाल करके, Apache Beam के साथ Maven प्रोजेक्ट बनाने का तरीका
  • Google Cloud Platform Console का इस्तेमाल करके, पाइपलाइन का उदाहरण चलाएं
  • Cloud Storage से जुड़ी बकेट और उसमें मौजूद कॉन्टेंट को मिटाने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • कोई ब्राउज़र, जैसे कि Chrome या Firefox

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

सिर्फ़ इसे पढ़ें इसे पढ़ें और एक्सरसाइज़ पूरी करें

Google Cloud Platform की सेवाओं को इस्तेमाल करने के अपने अनुभव को आप क्या रेटिंग देंगे?

शुरुआती सामान्य एडवांस

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.

इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें बताया गया है कि संसाधनों को कैसे बंद किया जाए, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ता, मुफ़्त में आज़माने के लिए 300 डॉलर के प्रोग्राम में शामिल हो सकते हैं.

एपीआई चालू करना

स्क्रीन पर सबसे ऊपर बाईं ओर मौजूद, मेन्यू आइकॉन पर क्लिक करें.

2bfc27ef9ba2ec7d.png

ड्रॉप-डाउन से, एपीआई और सेवाएं > डैशबोर्ड चुनें.

5b65523a6cc0afa6.png

+ एपीआई और सेवाएं चालू करें को चुनें.

81ed72192c0edd96.png

खोज बॉक्स में "Compute Engine" खोजें. दिखने वाली नतीजों की सूची में, "Compute Engine API" पर क्लिक करें.

3f201e991c7b4527.png

Google Compute Engine पेज पर, चालू करें पर क्लिक करें

ac121653277fa7bb.png

इसे चालू करने के बाद, वापस जाने के लिए ऐरो पर क्लिक करें.

अब इन एपीआई को खोजें और इन्हें भी चालू करें:

  • Cloud Dataflow
  • Stackdriver
  • Cloud Storage
  • Cloud Storage JSON
  • BigQuery
  • Cloud Pub/Sub
  • Cloud Datastore
  • Cloud Resource Manager API

3. नया Cloud Storage बकेट बनाना

Google Cloud Platform Console में, स्क्रीन पर सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें:

2bfc27ef9ba2ec7d.png

नीचे की ओर स्क्रोल करें और स्टोरेज सब-सेक्शन में जाकर, Cloud Storage > ब्राउज़र चुनें:

2b6c3a2a92b47015.png

अब आपको Cloud Storage Browser दिखेगा. अगर आपने ऐसा प्रोजेक्ट इस्तेमाल किया है जिसमें फ़िलहाल कोई Cloud Storage बकेट नहीं है, तो आपको नई बकेट बनाने का न्योता दिखेगा. बकेट बनाने के लिए, बकेट बनाएं बटन दबाएं:

a711016d5a99dc37.png

अपने बकेट का नाम डालें. डायलॉग बॉक्स में दिए गए नोट के मुताबिक, Cloud Storage के सभी बकेट के नाम अलग-अलग होने चाहिए. इसलिए, अगर आपने कोई सामान्य नाम चुना है, जैसे कि "test", तो हो सकता है कि किसी और ने पहले ही उस नाम से कोई बकेट बना लिया हो. ऐसे में, आपको गड़बड़ी का मैसेज मिलेगा.

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

3a5458648cfe3358.png

अपने बकेट के लिए कोई यूनीक नाम डालें और बनाएं पर क्लिक करें. अगर आपने ऐसा नाम चुना है जिसका इस्तेमाल पहले से किया जा रहा है, तो आपको ऊपर दिखाया गया गड़बड़ी का मैसेज दिखेगा. बकेट बन जाने के बाद, आपको ब्राउज़र में अपनी नई, खाली बकेट पर ले जाया जाएगा:

3bda986ae88c4e71.png

आपको जो बकेट का नाम दिखेगा वह अलग होगा, क्योंकि सभी प्रोजेक्ट के लिए बकेट का नाम अलग होना चाहिए.

4. Cloud Shell शुरू करना

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LtwBlUZFXFCWFrmrWZLqg1MkZz2LdgUDQ पर क्लिक करें.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

अगर आपने पहले कभी Cloud Shell का इस्तेमाल नहीं किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर ऐसा होता है, तो जारी रखें पर क्लिक करें. इसके बाद, आपको यह स्क्रीन कभी नहीं दिखेगी. एक बार दिखने वाली स्क्रीन ऐसी दिखती है:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

Cloud Shell से कनेक्ट होने में कुछ ही सेकंड लगेंगे.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में चलता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में ज़्यादातर काम, सिर्फ़ ब्राउज़र या Chromebook की मदद से किया जा सकता है.

Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर पहले ही सेट कर दिया गया है.

  1. पुष्टि करें कि आपने Cloud Shell में पुष्टि कर ली है. इसके लिए, यह कमांड चलाएं:
gcloud auth list

कमांड आउटपुट

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो इस कमांड का इस्तेमाल करके इसे सेट किया जा सकता है:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

5. Maven प्रोजेक्ट बनाना

Cloud Shell लॉन्च होने के बाद, Apache Beam के लिए Java SDK टूल का इस्तेमाल करके, Maven प्रोजेक्ट बनाना शुरू करें.

Apache Beam, डेटा पाइपलाइन के लिए एक ओपन सोर्स प्रोग्रामिंग मॉडल है. इन पाइपलाइन को Apache Beam प्रोग्राम की मदद से तय किया जाता है. साथ ही, पाइपलाइन को चलाने के लिए, Dataflow जैसे रनर को चुना जा सकता है.

अपने शेल में mvn archetype:generate कमांड को इस तरह चलाएं:

  mvn archetype:generate \
     -DarchetypeGroupId=org.apache.beam \
     -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
     -DarchetypeVersion=2.46.0 \
     -DgroupId=org.example \
     -DartifactId=first-dataflow \
     -Dversion="0.1" \
     -Dpackage=org.apache.beam.examples \
     -DinteractiveMode=false

कमांड चलाने के बाद, आपको अपनी मौजूदा डायरेक्ट्री में first-dataflow नाम की एक नई डायरेक्ट्री दिखेगी. first-dataflow में Maven प्रोजेक्ट शामिल है. इसमें Java के लिए Cloud Dataflow SDK और उदाहरण के तौर पर पाइपलाइन शामिल हैं.

6. Cloud Dataflow पर टेक्स्ट प्रोसेसिंग पाइपलाइन चलाना

सबसे पहले, अपने प्रोजेक्ट आईडी और Cloud Storage बकेट के नामों को एनवायरमेंट वैरिएबल के तौर पर सेव करें. Cloud Shell में जाकर ऐसा किया जा सकता है. <your_project_id> की जगह अपना प्रोजेक्ट आईडी डालना न भूलें.

 export PROJECT_ID=<your_project_id>

अब हम Cloud Storage बकेट के लिए भी यही तरीका अपनाएंगे. ध्यान रखें कि <your_bucket_name> की जगह, उस यूनीक नाम का इस्तेमाल करें जिसका इस्तेमाल आपने पिछले चरण में बकेट बनाने के लिए किया था.

 export BUCKET_NAME=<your_bucket_name>

first-dataflow/ डायरेक्ट्री पर जाएं.

 cd first-dataflow

हम WordCount नाम की एक पाइपलाइन चलाने जा रहे हैं. यह पाइपलाइन टेक्स्ट को पढ़ती है, टेक्स्ट लाइनों को अलग-अलग शब्दों में बांटती है, और उन शब्दों की फ़्रीक्वेंसी की गिनती करती है. सबसे पहले, हम पाइपलाइन को चलाएंगे. इसके चलने के दौरान, हम देखेंगे कि हर चरण में क्या हो रहा है.

अपने शेल या टर्मिनल विंडो में mvn compile exec:java कमांड चलाकर, पाइपलाइन शुरू करें. --project, --stagingLocation, और --output आर्ग्युमेंट के लिए, यहां दी गई कमांड उन एनवायरमेंट वैरिएबल को रेफ़र करती है जिन्हें आपने इस चरण में पहले सेट अप किया था.

 mvn compile exec:java \
      -Pdataflow-runner compile exec:java \
      -Dexec.mainClass=org.apache.beam.examples.WordCount \
      -Dexec.args="--project=${PROJECT_ID} \
      --stagingLocation=gs://${BUCKET_NAME}/staging/ \
      --output=gs://${BUCKET_NAME}/output \
      --runner=DataflowRunner \
      --region=us-central1 \
      --gcpTempLocation=gs://${BUCKET_NAME}/temp"

जब जॉब चल रही हो, तब जॉब की सूची में जॉब ढूंढें.

Google Cloud Platform Console में Cloud Dataflow का वेब यूज़र इंटरफ़ेस (यूआई) खोलें. आपको शब्द गिनने का काम, चल रहा है स्टेटस के साथ दिखेगा:

3623be74922e3209.png

अब पाइपलाइन के पैरामीटर देखते हैं. अपनी नौकरी के नाम पर क्लिक करके शुरू करें:

816d8f59c72797d7.png

किसी जॉब को चुनने पर, एक्ज़ीक्यूशन ग्राफ़ देखा जा सकता है. पाइपलाइन के एक्ज़ीक्यूशन ग्राफ़ में, पाइपलाइन के हर ट्रांसफ़ॉर्म को एक बॉक्स के तौर पर दिखाया जाता है. इस बॉक्स में ट्रांसफ़ॉर्म का नाम और स्थिति से जुड़ी कुछ जानकारी होती है. ज़्यादा जानकारी देखने के लिए, हर चरण के सबसे ऊपर दाएं कोने में मौजूद कैरट पर क्लिक करें:

80a972dd19a6f1eb.png

आइए देखते हैं कि पाइपलाइन, हर चरण में डेटा को कैसे बदलती है:

  • रीड: इस चरण में, पाइपलाइन किसी इनपुट सोर्स से डेटा पढ़ती है. इस मामले में, यह Cloud Storage से ली गई एक टेक्स्ट फ़ाइल है. इसमें शेक्सपियर के नाटक किंग लियर का पूरा टेक्स्ट मौजूद है. हमारी पाइपलाइन, फ़ाइल को लाइन दर लाइन पढ़ती है और हर लाइन को PCollection के तौर पर आउटपुट करती है. हमारी टेक्स्ट फ़ाइल की हर लाइन, कलेक्शन में मौजूद एक एलिमेंट होती है.
  • CountWords: CountWords चरण के दो हिस्से होते हैं. सबसे पहले, यह ExtractWords नाम के पैरलल डू फ़ंक्शन (ParDo) का इस्तेमाल करता है. इससे हर लाइन को अलग-अलग शब्दों में बांटा जाता है. ExtractWords का आउटपुट एक नया PCollection होता है, जिसमें हर एलिमेंट एक शब्द होता है. अगले चरण Count में, Java SDK टूल से मिले ट्रांसफ़ॉर्म का इस्तेमाल किया जाता है. यह ट्रांसफ़ॉर्म, कुंजी और वैल्यू के जोड़े दिखाता है. इसमें कुंजी एक यूनीक शब्द होता है और वैल्यू, उस शब्द के दिखने की संख्या होती है. यहां CountWords को लागू करने का तरीका बताया गया है. साथ ही, GitHub पर WordCount.java फ़ाइल देखी जा सकती है:
 /**
   * A PTransform that converts a PCollection containing lines of text into a PCollection of
   * formatted word counts.
   *
   * <p>Concept #3: This is a custom composite transform that bundles two transforms (ParDo and
   * Count) as a reusable PTransform subclass. Using composite transforms allows for easy reuse,
   * modular testing, and an improved monitoring experience.
   */
  public static class CountWords
      extends PTransform<PCollection<String>, PCollection<KV<String, Long>>> {
    @Override
    public PCollection<KV<String, Long>> expand(PCollection<String> lines) {

      // Convert lines of text into individual words.
      PCollection<String> words = lines.apply(ParDo.of(new ExtractWordsFn()));

      // Count the number of times each word occurs.
      PCollection<KV<String, Long>> wordCounts = words.apply(Count.perElement());

      return wordCounts;
    }
  }
  • MapElements: यह नीचे कॉपी किए गए FormatAsTextFn को शुरू करता है. यह हर की, वैल्यू पेयर को प्रिंट की जा सकने वाली स्ट्रिंग में फ़ॉर्मैट करता है.
  /** A SimpleFunction that converts a Word and Count into a printable string. */
  public static class FormatAsTextFn extends SimpleFunction<KV<String, Long>, String> {
    @Override
    public String apply(KV<String, Long> input) {
      return input.getKey() + ": " + input.getValue();
    }
  }
  • WriteCounts: इस चरण में, हम प्रिंट की जा सकने वाली स्ट्रिंग को कई शार्ड की गई टेक्स्ट फ़ाइलों में लिखते हैं.

हम कुछ ही मिनटों में, पाइपलाइन से मिले आउटपुट को देखेंगे.

अब ग्राफ़ के दाईं ओर मौजूद नौकरी की जानकारी पेज देखें. इसमें पाइपलाइन के वे पैरामीटर शामिल हैं जिन्हें हमने mvn compile exec:java कमांड में शामिल किया था.

9723815a1f5bf08b.png

208a7f0d6973acf6.png

पाइपलाइन के लिए कस्टम काउंटर भी देखे जा सकते हैं. इस मामले में, यह दिखाता है कि अब तक कितनी खाली लाइनें मिली हैं. ऐप्लिकेशन से जुड़ी मेट्रिक को ट्रैक करने के लिए, अपनी पाइपलाइन में नए काउंटर जोड़े जा सकते हैं.

a2e2800e2c6893f8.png

गड़बड़ी के मैसेज देखने के लिए, कंसोल में सबसे नीचे मौजूद लॉग आइकॉन पर क्लिक करें.

23c64138a1027f8.png

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

94ba42015fdafbe2.png

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

जॉब लॉग पर वापस जाने के लिए, ग्राफ़ के बाहर क्लिक करके या दाईं ओर मौजूद साइड पैनल में 'बंद करें' बटन का इस्तेमाल करके, चरण से चुने का निशान हटाएं.

पाइपलाइन चलाने वाले Compute Engine इंस्टेंस के वर्कर लॉग देखने के लिए, लॉग टैब में मौजूद वर्कर लॉग बटन का इस्तेमाल करें. वर्कर लॉग में, आपके कोड से जनरेट हुई लॉग लाइनें और उसे चलाने वाला Dataflow जनरेट किया गया कोड शामिल होता है.

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

5a53c244f28d5478.png

डेटाफ़्लो मॉनिटरिंग इंटरफ़ेस में, सिर्फ़ सबसे नए लॉग मैसेज दिखते हैं. लॉग पैनल की दाईं ओर मौजूद, Google Cloud Observability लिंक पर क्लिक करके सभी लॉग देखे जा सकते हैं.

2bc704a4d6529b31.png

यहां अलग-अलग तरह के लॉग की खास जानकारी दी गई है. इन्हें Monitoring→Logs पेज पर जाकर देखा जा सकता है:

  • job-message लॉग में, नौकरी के लेवल के मैसेज होते हैं. इन्हें Dataflow के अलग-अलग कॉम्पोनेंट जनरेट करते हैं. उदाहरणों में ये शामिल हैं: अपने-आप स्केल होने की सुविधा का कॉन्फ़िगरेशन, वर्कर के शुरू या बंद होने का समय, जॉब के चरण की प्रोग्रेस, और जॉब से जुड़ी गड़बड़ियां. उपयोगकर्ता के कोड के क्रैश होने की वजह से होने वाली वर्कर-लेवल की गड़बड़ियां, worker लॉग में मौजूद होती हैं. ये गड़बड़ियां, job-message लॉग में भी दिखती हैं.
  • वर्कर लॉग, Dataflow वर्कर जनरेट करते हैं. पाइपलाइन से जुड़े ज़्यादातर काम वर्कर करते हैं. उदाहरण के लिए, डेटा पर ParDos लागू करना. वर्कर लॉग में, आपके कोड और Dataflow से लॉग किए गए मैसेज होते हैं.
  • worker-startup लॉग, ज़्यादातर Dataflow जॉब पर मौजूद होते हैं. ये स्टार्टअप प्रोसेस से जुड़े मैसेज कैप्चर कर सकते हैं. स्टार्टअप प्रोसेस में, Cloud Storage से किसी जॉब के जार डाउनलोड करना और फिर वर्कर शुरू करना शामिल है. अगर वर्कर शुरू करने में कोई समस्या आती है, तो इन लॉग की मदद से समस्या का पता लगाया जा सकता है.
  • shuffler लॉग में, वर्कर के ऐसे मैसेज शामिल होते हैं जो पैरलल पाइपलाइन ऑपरेशन के नतीजों को एक साथ जोड़ते हैं.
  • docker और kubelet लॉग में, इन सार्वजनिक टेक्नोलॉजी से जुड़े मैसेज होते हैं. इनका इस्तेमाल Dataflow वर्कर पर किया जाता है.

अगले चरण में, हम यह देखेंगे कि आपका काम पूरा हुआ है या नहीं.

7. देखें कि आपका काम पूरा हुआ है या नहीं

Google Cloud Platform Console में Cloud Dataflow का वेब यूज़र इंटरफ़ेस (यूआई) खोलें.

आपको शब्द गिनने का काम, चल रहा है स्टेटस के साथ दिखेगा. इसके बाद, यह पूरा हो गया स्टेटस के साथ दिखेगा:

4c408162416d03a2.png

इस प्रोसेस में करीब 3 से 4 मिनट लगेंगे.

क्या आपको याद है कि आपने पाइपलाइन कब चलाई थी और आउटपुट बकेट के बारे में जानकारी कब दी थी? आइए, नतीजे पर एक नज़र डालते हैं. क्या आपको यह नहीं जानना कि किंग लियर में हर शब्द कितनी बार आया है?!). Google Cloud Platform Console में, Cloud Storage ब्राउज़र पर वापस जाएं. आपको अपने बकेट में, आउटपुट फ़ाइलें और स्टेजिंग फ़ाइलें दिखनी चाहिए. ये फ़ाइलें आपके जॉब ने बनाई हैं:

25a5d3d4b5d0b567.png

8. अपने संसाधनों को बंद करना

Google Cloud Platform Console से अपने संसाधनों को बंद किया जा सकता है.

Google Cloud Platform Console में Cloud Storage ब्राउज़र खोलें.

2b6c3a2a92b47015.png

आपने जिस बकेट को बनाया है उसके बगल में मौजूद चेकबॉक्स को चुनें. इसके बाद, बकेट और उसके कॉन्टेंट को हमेशा के लिए मिटाने के लिए, मिटाएं पर क्लिक करें.

2f7780bdf10b69ba.png

8051ef293a8e5cfe.png

9. बधाई हो!

आपने Cloud Dataflow SDK की मदद से Maven प्रोजेक्ट बनाने, Google Cloud Platform Console का इस्तेमाल करके उदाहरण के तौर पर दी गई पाइपलाइन चलाने, और उससे जुड़े Cloud Storage बकेट और उसके कॉन्टेंट को मिटाने का तरीका सीखा.

ज़्यादा जानें

लाइसेंस

इस काम के लिए, Creative Commons एट्रिब्यूशन 3.0 जेनेरिक लाइसेंस और Apache 2.0 लाइसेंस के तहत लाइसेंस मिला है.