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

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

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

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

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

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

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

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 .....")
এই স্ক্রিপ্টটি ম্যানেজড অ্যাপাচি স্পার্ক-এ একটি স্পার্ক ব্যাচ জব হিসেবে জমা দিন। বাম দিকের নেভিগেশন মেনুতে থাকা ‘Jobs’- এ ক্লিক করুন এবং তারপরে ‘Submit Job’-এ ক্লিক করুন।

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

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

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

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

লক্ষ্য করুন, HiveQL কীভাবে সমস্ত রেকর্ড নির্বাচন করে কনসোলে প্রদর্শন করে।
৬. অটোস্কেলিং
অটোস্কেলিং হলো কোনো একটি ওয়ার্কলোডের জন্য ক্লাস্টার ওয়ার্কার নোডের 'সঠিক' সংখ্যা অনুমান করার কাজ।
ম্যানেজড অ্যাপাচি স্পার্ক অটোস্কেলিং পলিসিস এপিআই ক্লাস্টার রিসোর্স ম্যানেজমেন্টকে স্বয়ংক্রিয় করার একটি ব্যবস্থা প্রদান করে এবং ক্লাস্টার ওয়ার্কার ভিএম-এর অটোস্কেলিং সক্ষম করে। একটি অটোস্কেলিং পলিসি হলো একটি পুনঃব্যবহারযোগ্য কনফিগারেশন যা বর্ণনা করে যে, এই পলিসি ব্যবহারকারী ক্লাস্টার ওয়ার্কাররা কীভাবে স্কেল করবে। এটি ক্লাস্টারের জীবনকাল জুড়ে ক্লাস্টার রিসোর্সের উপর সূক্ষ্ম নিয়ন্ত্রণ প্রদানের জন্য স্কেলিংয়ের সীমা, পুনরাবৃত্তি এবং আগ্রাসী মনোভাব নির্ধারণ করে।
পরিচালিত অ্যাপাচি স্পার্ক অটোস্কেলিং পলিসিগুলো 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 ) নামক অতিরিক্ত উপাদান ইনস্টল করতে পারেন।

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

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