১. ভূমিকা - গুগল ডেটাপ্রক
ডেটাপ্রক হলো অ্যাপাচি স্পার্ক, অ্যাপাচি ফ্লিংক, প্রেস্টো এবং আরও অনেক ওপেন সোর্স টুল ও ফ্রেমওয়ার্ক চালানোর জন্য একটি সম্পূর্ণভাবে পরিচালিত এবং অত্যন্ত স্কেলেবল পরিষেবা। বিশ্বব্যাপী ডেটা লেক আধুনিকীকরণ, ETL / ELT এবং নিরাপদ ডেটা সায়েন্সের জন্য ডেটাপ্রক ব্যবহার করুন। ডেটাপ্রক বিগকোয়েরি , ক্লাউড স্টোরেজ , ভার্টেক্স এআই এবং ডেটাপ্লেক্স সহ বেশ কয়েকটি গুগল ক্লাউড পরিষেবার সাথেও সম্পূর্ণরূপে সমন্বিত।
ডেটাপ্রক তিনটি সংস্করণে পাওয়া যায়:
- ডেটাপ্রোক সার্ভারলেস আপনাকে ইনফ্রাস্ট্রাকচার ও অটোস্কেলিং কনফিগার করার প্রয়োজন ছাড়াই পাইস্পার্ক জব চালানোর সুযোগ দেয়। ডেটাপ্রোক সার্ভারলেস পাইস্পার্ক ব্যাচ ওয়ার্কলোড এবং সেশন / নোটবুক সমর্থন করে।
- গুগল কম্পিউট ইঞ্জিনে থাকা ডেটাপ্রক আপনাকে ফ্লিন্ক এবং প্রেস্টোর মতো ওপেন সোর্স টুলের পাশাপাশি YARN-ভিত্তিক স্পার্ক ওয়ার্কলোডের জন্য একটি হ্যাডুপ YARN ক্লাস্টার পরিচালনা করার সুযোগ দেয়। আপনি অটোস্কেলিং সহ, আপনার পছন্দ অনুযায়ী ভার্টিকাল বা হরাইজন্টাল স্কেলিংয়ের মাধ্যমে আপনার ক্লাউড-ভিত্তিক ক্লাস্টারগুলোকে সাজিয়ে নিতে পারেন।
- গুগল কুবারনেটিস ইঞ্জিনে ডেটাপ্রক আপনাকে স্পার্ক, পাইস্পার্ক, স্পার্কআর বা স্পার্ক এসকিউএল জব জমা দেওয়ার জন্য আপনার জিকেই পরিকাঠামোতে ডেটাপ্রক ভার্চুয়াল ক্লাস্টার কনফিগার করার সুযোগ দেয়।
২. গুগল ক্লাউড ভিপিসি-তে একটি ডেটাপ্রোক ক্লাস্টার তৈরি করুন
এই ধাপে, আপনি গুগল ক্লাউড কনসোল ব্যবহার করে গুগল ক্লাউডে একটি ডেটাপ্রোক ক্লাস্টার তৈরি করবেন।
প্রথম ধাপ হিসেবে, কনসোলে Dataproc সার্ভিস API সক্রিয় করুন। এটি সক্রিয় হয়ে গেলে, সার্চ বারে "Dataproc" লিখে সার্চ করুন এবং Create Cluster-এ ক্লিক করুন।
Dataproc ক্লাস্টার চালানোর জন্য অন্তর্নিহিত অবকাঠামো হিসেবে Google Compute Engine (GCE) VM ব্যবহার করতে Compute Engine-এ ক্লাস্টার নির্বাচন করুন।

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

এই পৃষ্ঠায়:
- ক্লাস্টারটির জন্য একটি অনন্য নাম প্রদান করুন।
- নির্দিষ্ট অঞ্চলটি নির্বাচন করুন। আপনি একটি জোনও নির্বাচন করতে পারেন, তবে ডেটাপ্রক আপনার জন্য স্বয়ংক্রিয়ভাবে একটি বেছে নেওয়ার সুবিধা প্রদান করে। এই কোডল্যাবের জন্য, "us-central1" এবং "us-central1-c" নির্বাচন করুন।
- 'স্ট্যান্ডার্ড' ক্লাস্টার টাইপটি নির্বাচন করুন। এটি নিশ্চিত করে যে একটি মাত্র মাস্টার নোড থাকবে।
- নোড কনফিগার করুন ট্যাবে, নিশ্চিত করুন যে তৈরি করা ওয়ার্কারের সংখ্যা দুই হবে।
- কাস্টমাইজ ক্লাস্টার সেকশনে, এনাবল কম্পোনেন্ট গেটওয়ে-এর পাশের বক্সে টিক দিন। এর মাধ্যমে ক্লাস্টারের ওয়েব ইন্টারফেসগুলো, যেমন—স্পার্ক ইউআই, ইয়ার্ন নোড ম্যানেজার এবং জুপিটার নোটবুক, অ্যাক্সেস করা যাবে।
- ঐচ্ছিক উপাদানসমূহ (Optional Components) থেকে জুপিটার নোটবুক (Jupyter Notebook) নির্বাচন করুন। এটি একটি জুপিটার নোটবুক সার্ভার দিয়ে ক্লাস্টারটি কনফিগার করে।
- অন্য সবকিছু অপরিবর্তিত রেখে Create Cluster-এ ক্লিক করুন।
এটি একটি ডেটাপ্রোক ক্লাস্টার চালু করবে।
৩. ক্লাস্টারটি চালু করুন এবং SSH-এর মাধ্যমে এতে প্রবেশ করুন।
ক্লাস্টারের স্ট্যাটাস 'Running'- এ পরিবর্তিত হলে, Dataproc কনসোল থেকে ক্লাস্টারের নামে ক্লিক করুন।

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

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

ডিরেক্টরি কাঠামো দেখতে hdfs কমান্ডগুলো চালান।
hadoop_commands_example
sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51
sudo hadoop fs -ls /
৪. ওয়েব ইন্টারফেস এবং কম্পোনেন্ট গেটওয়ে
Dataproc ক্লাস্টার কনসোল থেকে আপনার ক্লাস্টারের নামে ক্লিক করুন, তারপর WEB INTERFACES ট্যাবে ক্লিক করুন।

এখানে জুপিটার সহ উপলব্ধ ওয়েব ইন্টারফেসগুলো দেখানো হচ্ছে। একটি জুপিটার নোটবুক খুলতে জুপিটার-এ ক্লিক করুন। আপনি এটি ব্যবহার করে জিসিএস-এ সংরক্ষিত পাইস্পার্ক-এ নোটবুক তৈরি করতে পারেন। আপনার নোটবুকটি গুগল ক্লাউড স্টোরেজে সংরক্ষণ করতে এবং এই কোডল্যাবে ব্যবহারের জন্য একটি পাইস্পার্ক নোটবুক খুলতে পারেন।
৫. স্পার্ক জবগুলো পর্যবেক্ষণ ও নিরীক্ষণ করুন
Dataproc ক্লাস্টারটি চালু হয়ে গেলে, একটি PySpark ব্যাচ জব তৈরি করুন এবং জবটি Dataproc ক্লাস্টারে জমা দিন।
PySpark স্ক্রিপ্টটি সংরক্ষণের জন্য একটি Google Cloud Storage (GCS) বাকেট তৈরি করুন । বাকেটটি যেন Dataproc ক্লাস্টারের একই অঞ্চলে তৈরি হয়, তা নিশ্চিত করুন।

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

একটি জব আইডি এবং অঞ্চল প্রদান করুন। আপনার ক্লাস্টার নির্বাচন করুন এবং আপনার কপি করা স্পার্ক স্ক্রিপ্টটির GCS অবস্থান প্রদান করুন। এই কাজটি ডেটাপ্রকে একটি স্পার্ক ব্যাচ জব হিসেবে চলবে।
ড্রাইভারটি যেন ওয়ার্কার নোডগুলোতে না চলে ডেটাপ্রক মাস্টার নোডে চলে, তা নিশ্চিত করতে প্রোপার্টিজের অধীনে spark.submit.deployMode কী এবং client ভ্যালু যোগ করুন। ব্যাচ জবটি ডেটাপ্রকে জমা দিতে `Submit`-এ ক্লিক করুন।

স্পার্ক স্ক্রিপ্টটি একটি ডেটাফ্রেম তৈরি করবে এবং test_table_1 একটি হাইভ টেবিলে লিখবে।
কাজটি সফলভাবে সম্পন্ন হলে, আপনি মনিটরিং ট্যাবের অধীনে কনসোলে প্রিন্ট হওয়া বিবৃতিগুলো দেখতে পাবেন।

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

লক্ষ্য করুন, জব টাইপ (Job Type) হাইভ (Hive) এবং কোয়েরি সোর্স টাইপ (query source type) কোয়েরি টেক্সট (Query Text) হিসেবে সেট করা আছে, যার মানে হলো আমরা সম্পূর্ণ হাইভকিউএল (HiveQL) স্টেটমেন্টটি কোয়েরি টেক্সট টেক্সটবক্সের মধ্যেই লিখব।
বাকি প্যারামিটারগুলো ডিফল্ট রেখে কাজটি জমা দিন।

লক্ষ্য করুন, HiveQL কীভাবে সমস্ত রেকর্ড নির্বাচন করে কনসোলে প্রদর্শন করে।
৬. অটোস্কেলিং
অটোস্কেলিং হলো কোনো একটি ওয়ার্কলোডের জন্য ক্লাস্টার ওয়ার্কার নোডের 'সঠিক' সংখ্যা অনুমান করার কাজ।
Dataproc AutoscalingPolicies API ক্লাস্টার রিসোর্স ম্যানেজমেন্টকে স্বয়ংক্রিয় করার জন্য একটি ব্যবস্থা প্রদান করে এবং ক্লাস্টার ওয়ার্কার ভিএম-এর অটোস্কেলিং সক্ষম করে। একটি অটোস্কেলিং পলিসি হলো একটি পুনঃব্যবহারযোগ্য কনফিগারেশন যা বর্ণনা করে যে, এই পলিসি ব্যবহারকারী ক্লাস্টার ওয়ার্কাররা কীভাবে স্কেল করবে। এটি ক্লাস্টারের জীবনকাল জুড়ে ক্লাস্টার রিসোর্সের উপর সূক্ষ্ম নিয়ন্ত্রণ প্রদানের জন্য স্কেলিংয়ের সীমা, পুনরাবৃত্তি এবং আগ্রাসী মনোভাব নির্ধারণ করে।
Dataproc অটোস্কেলিং পলিসিগুলো YAML ফাইল ব্যবহার করে লেখা হয় এবং এই YAML ফাইলগুলো হয় ক্লাস্টার তৈরির জন্য CLI কমান্ডে পাস করা হয় অথবা ক্লাউড কনসোল থেকে ক্লাস্টার তৈরি করার সময় একটি GCS বাকেট থেকে নির্বাচন করা হয়।
এখানে একটি ডেটাপ্রোক অটোস্কেলিং পলিসির উদাহরণ দেওয়া হলো:
policy.yaml
workerConfig:
minInstances: 10
maxInstances: 10
secondaryWorkerConfig:
maxInstances: 50
basicAlgorithm:
cooldownPeriod: 4m
yarnConfig:
scaleUpFactor: 0.05
scaleDownFactor: 1.0
gracefulDecommissionTimeout: 1h
৭. ডেটাপ্রোক ঐচ্ছিক উপাদানসমূহ কনফিগার করুন
এটি একটি ডেটাপ্রোক ক্লাস্টার চালু করবে।
যখন আপনি একটি ডেটাপ্রোক ক্লাস্টার তৈরি করেন, তখন স্ট্যান্ডার্ড অ্যাপাচি হ্যাডুপ ইকোসিস্টেমের উপাদানগুলো স্বয়ংক্রিয়ভাবে ক্লাস্টারে ইনস্টল হয়ে যায় ( ডেটাপ্রোক ভার্সন তালিকা দেখুন)। ক্লাস্টার তৈরির সময় আপনি ঐচ্ছিক উপাদান (Optional Components) নামক অতিরিক্ত উপাদান ইনস্টল করতে পারেন।

কনসোল থেকে ডেটাপ্রক ক্লাস্টার তৈরি করার সময়, আমরা ঐচ্ছিক উপাদানগুলো সক্রিয় করেছি এবং ঐচ্ছিক উপাদান হিসেবে জুপিটার নোটবুক নির্বাচন করেছি।
৮. সম্পদ পরিষ্কার করুন
ক্লাস্টারটি পরিষ্কার করতে, Dataproc কনসোল থেকে ক্লাস্টারটি নির্বাচন করার পর Stop-এ ক্লিক করুন। ক্লাস্টারটি বন্ধ হয়ে গেলে, ক্লাস্টারটি মুছে ফেলার জন্য Delete-এ ক্লিক করুন।
Dataproc ক্লাস্টারটি মুছে ফেলার পর, যে GCS বাকেটগুলিতে কোড কপি করা হয়েছিল সেগুলি মুছে ফেলুন।
রিসোর্সগুলো পরিষ্কার করতে এবং যেকোনো অনাকাঙ্ক্ষিত বিলিং বন্ধ করতে, প্রথমে ডেটাপ্রোক ক্লাস্টারটি বন্ধ করতে হবে এবং তারপর ডিলিট করতে হবে।
ক্লাস্টারটি বন্ধ ও মুছে ফেলার আগে, নিশ্চিত করুন যে HDFS স্টোরেজে লেখা সমস্ত ডেটা টেকসই স্টোরেজের জন্য GCS-এ কপি করা হয়েছে।
ক্লাস্টারটি বন্ধ করতে, স্টপ-এ ক্লিক করুন।

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