গুগল কম্পিউট ইঞ্জিনে ডেটাপ্রোক

1. ভূমিকা - Google Dataproc

Dataproc হল Apache Spark, Apache Flink, Presto, এবং অন্যান্য অনেক ওপেন সোর্স টুলস এবং ফ্রেমওয়ার্ক চালানোর জন্য একটি সম্পূর্ণরূপে পরিচালিত এবং অত্যন্ত পরিমাপযোগ্য পরিষেবা। ডেটা লেক আধুনিকীকরণ, ETL/ELT, এবং গ্রহের স্কেলে নিরাপদ ডেটা বিজ্ঞানের জন্য Dataproc ব্যবহার করুন। Dataproc এছাড়াও BigQuery , ক্লাউড স্টোরেজ , Vertex AI , এবং Dataplex সহ বেশ কয়েকটি Google ক্লাউড পরিষেবার সাথে সম্পূর্ণরূপে একত্রিত।

Dataproc তিনটি স্বাদে পাওয়া যায়:

  • ডেটাপ্রোক সার্ভারলেস আপনাকে অবকাঠামো এবং অটোস্কেলিং কনফিগার করার প্রয়োজন ছাড়াই PySpark কাজগুলি চালানোর অনুমতি দেয়। Dataproc সার্ভারলেস PySpark ব্যাচের কাজের চাপ এবং সেশন/নোটবুক সমর্থন করে।
  • গুগল কম্পিউট ইঞ্জিনে ডেটাপ্রোক আপনাকে ফ্লিঙ্ক এবং প্রেস্টোর মতো ওপেন সোর্স টুল ছাড়াও ইয়ার্ন-ভিত্তিক স্পার্ক ওয়ার্কলোডের জন্য একটি হ্যাডুপ ইয়ার্ন ক্লাস্টার পরিচালনা করতে দেয়। আপনি আপনার ক্লাউড-ভিত্তিক ক্লাস্টারগুলিকে অটোস্কেলিং সহ যতটা চান উল্লম্ব বা অনুভূমিক স্কেলিং দিয়ে তৈরি করতে পারেন।
  • Google Kubernetes Engine-এ Dataproc আপনাকে Spark, PySpark, SparkR বা Spark SQL জব জমা দেওয়ার জন্য আপনার GKE পরিকাঠামোতে Dataproc ভার্চুয়াল ক্লাস্টার কনফিগার করতে দেয়।

2. একটি Google ক্লাউড VPC-তে একটি Dataproc ক্লাস্টার তৈরি করুন৷

এই ধাপে, আপনি Google ক্লাউড কনসোল ব্যবহার করে Google ক্লাউডে একটি Dataproc ক্লাস্টার তৈরি করবেন।

প্রথম ধাপ হিসেবে, কনসোলে Dataproc পরিষেবা API সক্ষম করুন। একবার এটি সক্ষম হয়ে গেলে, অনুসন্ধান বারে "Dataproc" অনুসন্ধান করুন এবং ক্লাস্টার তৈরি করুন ক্লিক করুন।

Dataproc ক্লাস্টার চালানোর জন্য অন্তর্নিহিত অবকাঠামো হিসেবে Google Compute Engine(GCE) VM ব্যবহার করতে কম্পিউট ইঞ্জিনে ক্লাস্টার নির্বাচন করুন।

a961b2e8895e88da.jpeg

আপনি এখন ক্লাস্টার তৈরি পৃষ্ঠায় আছেন।

9583c91204a09c12.jpeg

এই পৃষ্ঠায়:

  • ক্লাস্টারের জন্য একটি অনন্য নাম প্রদান করুন।
  • নির্দিষ্ট অঞ্চল নির্বাচন করুন। আপনি একটি অঞ্চলও নির্বাচন করতে পারেন, তবে, Dataproc স্বয়ংক্রিয়ভাবে আপনার জন্য একটি বেছে নেওয়ার ক্ষমতা প্রদান করে। এই কোডল্যাবের জন্য, "us-central1" এবং "us-central1-c" নির্বাচন করুন।
  • "স্ট্যান্ডার্ড" ক্লাস্টার টাইপ নির্বাচন করুন। এটি নিশ্চিত করে যে একটি মাস্টার নোড আছে।
  • কনফিগার নোড ট্যাবে, নিশ্চিত করুন যে তৈরি করা কর্মীদের সংখ্যা দুই হবে।
  • কাস্টমাইজ ক্লাস্টার বিভাগে, কম্পোনেন্ট গেটওয়ে সক্ষম করার পাশের বাক্সটি চেক করুন। এটি স্পার্ক UI, ইয়ার্ন নোড ম্যানেজার এবং জুপিটার নোটবুক সহ ক্লাস্টারে ওয়েব ইন্টারফেসে অ্যাক্সেস সক্ষম করে।
  • ঐচ্ছিক উপাদানগুলিতে , জুপিটার নোটবুক নির্বাচন করুন। এটি একটি জুপিটার নোটবুক সার্ভারের সাথে ক্লাস্টারটিকে কনফিগার করে।
  • বাকি সব কিছু যেমন আছে তেমনি রেখে Create Cluster এ ক্লিক করুন।

এটি একটি Dataproc ক্লাস্টার স্পিন আপ করবে।

3. এতে ক্লাস্টার এবং SSH চালু করুন

একবার ক্লাস্টারের অবস্থা Running- এ পরিবর্তিত হলে, Dataproc কনসোল থেকে ক্লাস্টার নামের উপর ক্লিক করুন।

7332f1c2cb25807d.jpeg

মাস্টার নোড এবং ক্লাস্টারের দুটি কর্মী নোড দেখতে VM ইনস্ট্যান্স ট্যাবে ক্লিক করুন।

25be1578e00f669f.jpeg

মাস্টার নোডে লগ ইন করতে মাস্টার নোডের পাশে SSH- এ ক্লিক করুন।

2810ffd97f315bdb.jpeg

ডিরেক্টরি গঠন দেখতে hdfs কমান্ড চালান।

hadoop_commands_example

sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51 
sudo hadoop fs -ls /

4. ওয়েব ইন্টারফেস এবং কম্পোনেন্ট গেটওয়ে

Dataproc ক্লাস্টার কনসোল থেকে আপনার ক্লাস্টারের নামের উপর ক্লিক করুন, তারপর WEB INTERFACES ট্যাবে ক্লিক করুন।

6398f71d6293d6ff.jpeg

এটি জুপিটার সহ উপলব্ধ ওয়েব ইন্টারফেসগুলি দেখায়। জুপিটার নোটবুক খুলতে জুপিটারে ক্লিক করুন। আপনি GCS-এ সঞ্চিত PySpark-এ নোটবুক তৈরি করতে এটি ব্যবহার করতে পারেন। Google ক্লাউড স্টোরেজে আপনার নোটবুক সংরক্ষণ করতে এবং এই কোডল্যাবে ব্যবহার করার জন্য একটি PySpark নোটবুক খুলুন।

5. স্পার্ক জবগুলি পর্যবেক্ষণ এবং পর্যবেক্ষণ করুন

Dataproc ক্লাস্টার আপ এবং চলমান সঙ্গে, একটি PySpark ব্যাচ কাজ তৈরি করুন এবং কাজটি Dataproc ক্লাস্টারে জমা দিন।

PySpark স্ক্রিপ্ট সংরক্ষণ করতে একটি Google ক্লাউড স্টোরেজ (GCS) বালতি তৈরি করুন । Dataproc ক্লাস্টারের মতো একই অঞ্চলে বালতি তৈরি করা নিশ্চিত করুন।

679fd2f76806f4e2.jpeg

এখন GCS বালতি তৈরি করা হয়েছে, নিম্নলিখিত ফাইলটি এই বালতিতে অনুলিপি করুন।

https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py

এই স্ক্রিপ্টটি একটি নমুনা স্পার্ক ডেটাফ্রেম তৈরি করে এবং এটিকে হাইভ টেবিল হিসাবে লেখে।

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-এ স্পার্ক ব্যাচের কাজ হিসাবে এই স্ক্রিপ্টটি জমা দিন। বাম নেভিগেশন মেনুতে চাকরিতে ক্লিক করুন এবং তারপরে চাকরি জমা দিন ক্লিক করুন

5767fc7c50b706d3.jpeg

একটি কাজের আইডি এবং অঞ্চল প্রদান করুন। আপনার ক্লাস্টার নির্বাচন করুন এবং আপনি কপি করা স্পার্ক স্ক্রিপ্টের GCS অবস্থান প্রদান করুন। এই কাজটি Dataproc-এ স্পার্ক ব্যাচের কাজ হিসেবে চলবে।

বৈশিষ্ট্যের অধীনে কী spark.submit.deployMode এবং ভ্যালু client যোগ করুন যাতে ড্রাইভারটি Dataproc মাস্টার নোডে চলে এবং কর্মী নোডে নয়। Dataproc এ ব্যাচ জব জমা দিতে Submit এ ক্লিক করুন।

a7ca90f5132faa31.jpeg

স্পার্ক স্ক্রিপ্ট একটি ডেটাফ্রেম তৈরি করবে এবং একটি Hive টেবিল test_table_1 এ লিখবে।

একবার কাজটি সফলভাবে চালানো হলে, আপনি মনিটরিং ট্যাবের অধীনে কনসোল প্রিন্ট স্টেটমেন্ট দেখতে পাবেন।

bdec2f3ae1055f9.jpeg

এখন যেহেতু Hive টেবিল তৈরি হয়েছে, টেবিলের বিষয়বস্তু নির্বাচন করতে এবং কনসোলে প্রদর্শনের জন্য আরেকটি Hive কোয়েরি কাজ জমা দিন।

নিম্নলিখিত বৈশিষ্ট্য সহ অন্য কাজ তৈরি করুন:

c16f02d1b3afaa27.jpeg

লক্ষ্য করুন কাজের ধরনটি Hive- এ সেট করা হয়েছে এবং কোয়েরির উৎসের ধরনটি হল Query Text , যার মানে আমরা Query Text টেক্সটবক্সের মধ্যে সম্পূর্ণ HiveQL বিবৃতি লিখব।

বাকি প্যারামিটারগুলি ডিফল্ট হিসাবে রেখে কাজটি জমা দিন।

e242e50bc2519bf4.jpeg

লক্ষ্য করুন কিভাবে HiveQL কনসোলে সমস্ত রেকর্ড এবং প্রদর্শন নির্বাচন করে।

6. অটোস্কেলিং

অটোস্কেলিং হল কাজের চাপের জন্য ক্লাস্টার কর্মী নোডের "সঠিক" সংখ্যা অনুমান করার কাজ।

Dataproc AutoscalingPolicies API ক্লাস্টার রিসোর্স ম্যানেজমেন্ট স্বয়ংক্রিয় করার জন্য একটি প্রক্রিয়া প্রদান করে এবং ক্লাস্টার কর্মী VM অটোস্কেলিং সক্ষম করে। একটি অটোস্কেলিং নীতি হল একটি পুনঃব্যবহারযোগ্য কনফিগারেশন যা বর্ণনা করে যে কীভাবে অটোস্কেলিং নীতি ব্যবহার করে ক্লাস্টার কর্মীদের স্কেল করা উচিত। এটা স্কেলিং সীমানা, ফ্রিকোয়েন্সি, এবং আক্রমনাত্মকতা সংজ্ঞায়িত করে যাতে ক্লাস্টারের জীবনকাল জুড়ে ক্লাস্টার সংস্থানগুলির উপর সূক্ষ্ম-দানাযুক্ত নিয়ন্ত্রণ প্রদান করা হয়।

Dataproc অটোস্কেলিং নীতিগুলি YAML ফাইলগুলি ব্যবহার করে লেখা হয় এবং এই YAML ফাইলগুলি হয় ক্লাস্টার তৈরির জন্য CLI কমান্ডে পাস করা হয় বা ক্লাউড কনসোল থেকে একটি ক্লাস্টার তৈরি করা হলে একটি 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 ইকোসিস্টেম উপাদানগুলি ক্লাস্টারে স্বয়ংক্রিয়ভাবে ইনস্টল হয়ে যায় ( ডেটাপ্রোক সংস্করণ তালিকা দেখুন)। ক্লাস্টার তৈরি করার সময় আপনি ক্লাস্টারে ঐচ্ছিক উপাদান নামে অতিরিক্ত উপাদান ইনস্টল করতে পারেন।

e39cc34245af3f01.jpeg

কনসোল থেকে Dataproc ক্লাস্টার তৈরি করার সময়, আমরা ঐচ্ছিক উপাদান সক্রিয় করেছি এবং ঐচ্ছিক উপাদান হিসেবে Jupyter Notebook নির্বাচন করেছি।

8. সম্পদ পরিষ্কার করুন

ক্লাস্টার পরিষ্কার করতে, Dataproc কনসোল থেকে ক্লাস্টার নির্বাচন করার পর Stop এ ক্লিক করুন। ক্লাস্টার বন্ধ হয়ে গেলে, ক্লাস্টার মুছে ফেলতে মুছুন-এ ক্লিক করুন।

Dataproc ক্লাস্টার মুছে ফেলার পরে, GCS বাকেটগুলি মুছুন যেখানে কোড কপি করা হয়েছিল।

সংস্থানগুলি পরিষ্কার করতে এবং কোনও অবাঞ্ছিত বিলিং বন্ধ করতে, Dataproc ক্লাস্টারটি প্রথমে বন্ধ করতে হবে এবং তারপর মুছে ফেলতে হবে।

ক্লাস্টার বন্ধ এবং মুছে ফেলার আগে, নিশ্চিত করুন যে HDFS স্টোরেজে লেখা সমস্ত ডেটা টেকসই স্টোরেজের জন্য GCS-এ কপি করা হয়েছে।

ক্লাস্টার বন্ধ করতে, Stop এ ক্লিক করুন।

52065de928ab52e7.jpeg

ক্লাস্টার বন্ধ হয়ে গেলে, ক্লাস্টার মুছে ফেলতে মুছুন-এ ক্লিক করুন।

নিশ্চিত ডায়ালগে, ক্লাস্টারটি মুছে ফেলতে মুছুন ক্লিক করুন।

52065de928ab52e7.jpeg