ডেটাফ্লো হল একটি ইউনিফাইড প্রোগ্রামিং মডেল এবং ETL, ব্যাচ কম্পিউটেশন এবং ক্রমাগত গণনা সহ বিস্তৃত ডেটা প্রসেসিং প্যাটার্ন তৈরি এবং কার্যকর করার জন্য একটি পরিচালিত পরিষেবা। যেহেতু ডেটাফ্লো একটি পরিচালিত পরিষেবা, এটি উচ্চ ব্যবহারের দক্ষতা বজায় রেখে বিলম্ব কমানোর জন্য চাহিদা অনুযায়ী সংস্থান বরাদ্দ করতে পারে।
ডেটাফ্লো মডেলটি ব্যাচ এবং স্ট্রিম প্রক্রিয়াকরণকে একত্রিত করে যাতে বিকাশকারীদের সঠিকতা, খরচ এবং প্রক্রিয়াকরণের সময়ের মধ্যে ট্রেডঅফ করতে হয় না। এই কোডল্যাবে, আপনি শিখবেন কীভাবে একটি ডেটাফ্লো পাইপলাইন চালাতে হয় যা একটি পাঠ্য ফাইলে অনন্য শব্দের উপস্থিতি গণনা করে।
এই টিউটোরিয়ালটি https://cloud.google.com/dataflow/docs/quickstarts/quickstart-java-maven থেকে অভিযোজিত হয়েছে
আপনি কি শিখবেন
- ক্লাউড ডেটাফ্লো এসডিকে দিয়ে কীভাবে একটি মাভেন প্রকল্প তৈরি করবেন
- Google ক্লাউড প্ল্যাটফর্ম কনসোল ব্যবহার করে একটি উদাহরণ পাইপলাইন চালান
- সম্পর্কিত ক্লাউড স্টোরেজ বালতি এবং এর বিষয়বস্তু কীভাবে মুছবেন
আপনি কি প্রয়োজন হবে
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?
আপনি Google ক্লাউড প্ল্যাটফর্ম পরিষেবাগুলি ব্যবহার করার বিষয়ে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে (Gmail বা Google Apps), তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে। Google ক্লাউড প্ল্যাটফর্ম কনসোলে সাইন-ইন করুন ( console.cloud.google.com ) এবং একটি নতুন প্রকল্প তৈরি করুন:
প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID
হিসাবে উল্লেখ করা হবে।
এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷
এই কোডল্যাবের মাধ্যমে চালানোর জন্য আপনার কয়েক ডলারের বেশি খরচ করা উচিত নয়, তবে আপনি যদি আরও সংস্থান ব্যবহার করার সিদ্ধান্ত নেন বা আপনি যদি সেগুলিকে চলমান রেখে দেন তবে এটি আরও বেশি হতে পারে (এই নথির শেষে "পরিষ্কার" বিভাগটি দেখুন)।
Google ক্লাউড প্ল্যাটফর্মের নতুন ব্যবহারকারীরা $300 বিনামূল্যের ট্রায়ালের জন্য যোগ্য৷
APIs সক্রিয় করুন
স্ক্রিনের উপরের বাম দিকে মেনু আইকনে ক্লিক করুন।
ড্রপ ডাউন থেকে API ম্যানেজার নির্বাচন করুন।
অনুসন্ধান বাক্সে "গুগল কম্পিউট ইঞ্জিন" অনুসন্ধান করুন। প্রদর্শিত ফলাফল তালিকায় "Google Compute Engine API" এ ক্লিক করুন।
Google Compute Engine পৃষ্ঠায় Enable এ ক্লিক করুন
একবার এটি সক্রিয় হয়ে গেলে ফিরে যেতে তীরটিতে ক্লিক করুন।
এখন নিম্নলিখিত API গুলি অনুসন্ধান করুন এবং সেগুলিও সক্ষম করুন:
- Google Dataflow API
- স্ট্যাকড্রাইভার লগিং API
- গুগল ক্লাউড স্টোরেজ
- Google ক্লাউড স্টোরেজ JSON API
- BigQuery API
- Google Cloud Pub/Sub API
- গুগল ক্লাউড ডেটাস্টোর API
Google ক্লাউড প্ল্যাটফর্ম কনসোলে , স্ক্রিনের উপরের বামদিকে মেনু আইকনে ক্লিক করুন:
নীচে স্ক্রোল করুন এবং স্টোরেজ উপধারায় ক্লাউড স্টোরেজ নির্বাচন করুন:
আপনার এখন ক্লাউড স্টোরেজ ব্রাউজারটি দেখতে হবে, এবং ধরে নিচ্ছি যে আপনি এমন একটি প্রকল্প ব্যবহার করছেন যেখানে বর্তমানে কোনো ক্লাউড স্টোরেজ বালতি নেই, আপনি একটি ডায়ালগ বক্স দেখতে পাবেন যা আপনাকে একটি নতুন বালতি তৈরি করতে আমন্ত্রণ জানিয়েছে:
একটি তৈরি করতে বালতি তৈরি করুন বোতাম টিপুন:
আপনার বালতি জন্য একটি নাম লিখুন. ডায়ালগ বক্স নোট হিসাবে, বালতির নামগুলি সমস্ত ক্লাউড স্টোরেজ জুড়ে অনন্য হতে হবে৷ সুতরাং আপনি যদি একটি সুস্পষ্ট নাম নির্বাচন করেন, যেমন "পরীক্ষা", আপনি সম্ভবত দেখতে পাবেন যে অন্য কেউ ইতিমধ্যে সেই নামের একটি বালতি তৈরি করেছে এবং একটি ত্রুটি পাবে৷
বালতির নামগুলিতে কোন অক্ষর অনুমোদিত তা সম্পর্কিত কিছু নিয়মও রয়েছে৷ আপনি যদি আপনার বালতির নাম একটি অক্ষর বা সংখ্যা দিয়ে শুরু করেন এবং শেষ করেন এবং মাঝখানে ড্যাশ ব্যবহার করেন, তাহলে আপনি ঠিক থাকবেন। আপনি যদি বিশেষ অক্ষর ব্যবহার করার চেষ্টা করেন, বা একটি অক্ষর বা সংখ্যা ছাড়া অন্য কিছু দিয়ে আপনার বালতির নাম শুরু বা শেষ করার চেষ্টা করেন, ডায়ালগ বক্স আপনাকে নিয়মগুলি মনে করিয়ে দেবে।
আপনার বালতির জন্য একটি অনন্য নাম লিখুন এবং তৈরি করুন টিপুন। আপনি যদি এমন কিছু বেছে নেন যা ইতিমধ্যেই ব্যবহার করা হচ্ছে, আপনি উপরে দেখানো ত্রুটি বার্তাটি দেখতে পাবেন। আপনি সফলভাবে একটি বালতি তৈরি করলে, আপনাকে ব্রাউজারে আপনার নতুন, খালি, বালতিতে নিয়ে যাওয়া হবে:
আপনি যে বালতি নামটি দেখছেন তা অবশ্যই আলাদা হবে, কারণ সেগুলি অবশ্যই সমস্ত প্রকল্পে অনন্য হতে হবে।
গুগল ক্লাউড শেল সক্রিয় করুন
GCP কনসোল থেকে উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:
তারপর "স্টার্ট ক্লাউড শেল" ক্লিক করুন:
পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে:
এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই ল্যাবে আপনার অনেক কাজ, যদি না হয়, তাহলে আপনি কেবল একটি ব্রাউজার বা আপনার Google Chromebook দিয়ে করতে পারেন৷
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রকল্পটি ইতিমধ্যেই আপনার PROJECT_ID- তে সেট করা আছে।
আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:
gcloud config set project <PROJECT_ID>
কমান্ড আউটপুট
Updated property [core/project].
ক্লাউড শেল চালু হওয়ার পরে, জাভার জন্য ক্লাউড ডেটাফ্লো SDK সমন্বিত একটি Maven প্রকল্প তৈরি করে শুরু করা যাক।
আপনার শেলে mvn archetype:generate
কমান্ড চালান নিম্নরূপ:
mvn archetype:generate \
-DarchetypeArtifactId=google-cloud-dataflow-java-archetypes-examples \
-DarchetypeGroupId=com.google.cloud.dataflow \
-DarchetypeVersion=1.9.0 \
-DgroupId=com.example \
-DartifactId=first-dataflow \
-Dversion="0.1" \
-DinteractiveMode=false \
-Dpackage=com.example
কমান্ড চালানোর পরে, আপনার বর্তমান ডিরেক্টরির অধীনে first-dataflow
নামে একটি নতুন ডিরেক্টরি দেখতে হবে। first-dataflow
একটি মাভেন প্রজেক্ট রয়েছে যা জাভা এবং উদাহরণ পাইপলাইনের জন্য ক্লাউড ডেটাফ্লো SDK অন্তর্ভুক্ত করে।
চলুন শুরু করা যাক আমাদের প্রকল্প আইডি এবং ক্লাউড স্টোরেজ বাকেটের নামগুলি পরিবেশের ভেরিয়েবল হিসাবে সংরক্ষণ করে। আপনি Cloud Shell এ এটি করতে পারেন। আপনার নিজের প্রজেক্ট আইডি দিয়ে <your_project_id>
প্রতিস্থাপন করতে ভুলবেন না।
export PROJECT_ID=<your_project_id>
এখন আমরা ক্লাউড স্টোরেজ বাকেটের জন্য একই কাজ করব। মনে রাখবেন, <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 \
-Dexec.mainClass=com.example.WordCount \
-Dexec.args="--project=${PROJECT_ID} \
--stagingLocation=gs://${BUCKET_NAME}/staging/ \
--output=gs://${BUCKET_NAME}/output \
--runner=BlockingDataflowPipelineRunner"
চাকরি চলাকালীন, কাজের তালিকায় কাজটি খুঁজে বের করা যাক।
Google ক্লাউড প্ল্যাটফর্ম কনসোলে ক্লাউড ডেটাফ্লো মনিটরিং UI খুলুন। রানিং- এর স্ট্যাটাস সহ আপনার ওয়ার্ডকাউন্টের কাজ দেখতে হবে:
এখন, পাইপলাইন পরামিতি তাকান. আপনার কাজের নামের উপর ক্লিক করে শুরু করুন:
আপনি যখন একটি কাজ নির্বাচন করেন, তখন আপনি এক্সিকিউশন গ্রাফ দেখতে পারেন। একটি পাইপলাইনের এক্সিকিউশন গ্রাফ পাইপলাইনের প্রতিটি রূপান্তরকে একটি বাক্স হিসাবে উপস্থাপন করে যাতে রূপান্তরের নাম এবং কিছু স্থিতির তথ্য থাকে। আপনি আরও বিশদ দেখতে প্রতিটি ধাপের উপরের ডানদিকের কোণায় ক্যারেটে ক্লিক করতে পারেন:
আসুন দেখি কিভাবে পাইপলাইন প্রতিটি ধাপে ডেটা রূপান্তর করে:
- পড়ুন : এই ধাপে, পাইপলাইনটি একটি ইনপুট উৎস থেকে পড়ে। এই ক্ষেত্রে, এটি ক্লাউড স্টোরেজের একটি টেক্সট ফাইল যেখানে শেক্সপিয়রের রাজা লিয়ার নাটকের সম্পূর্ণ পাঠ্য রয়েছে। আমাদের পাইপলাইন লাইন দ্বারা ফাইল লাইন পড়ে এবং প্রতিটি একটি
PCollection
আউটপুট করে, যেখানে আমাদের পাঠ্য ফাইলের প্রতিটি লাইন সংগ্রহের একটি উপাদান। - CountWords :
CountWords
ধাপের দুটি অংশ রয়েছে। প্রথমত, এটি প্রতিটি লাইনকে পৃথক শব্দে টোকেনাইজ করার জন্যExtractWords
নামে একটি সমান্তরাল ডু ফাংশন (ParDo) ব্যবহার করে। ExtractWords এর আউটপুট হল একটি নতুন PC Collection যেখানে প্রতিটি উপাদান একটি শব্দ। পরবর্তী ধাপ,Count
, ডেটাফ্লো SDK দ্বারা প্রদত্ত একটি রূপান্তর ব্যবহার করে যা কী, মান জোড়া প্রদান করে যেখানে কীটি একটি অনন্য শব্দ এবং মান হল এটি যতবার ঘটে তার সংখ্যা। এখানেCountWords
বাস্তবায়নের পদ্ধতি রয়েছে এবং আপনি GitHub- এ সম্পূর্ণ WordCount.java ফাইলটি দেখতে পারেন:
/**
* A PTransform that converts a PCollection containing lines of text
* into a PCollection of formatted word counts.
*/
public static class CountWords extends PTransform<PCollection<String>,
PCollection<KV<String, Long>>> {
@Override
public PCollection<KV<String, Long>> apply(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.<String>perElement());
return wordCounts;
}
}
- FormatAsText : এটি একটি ফাংশন যা প্রতিটি কী, মান জোড়াকে একটি মুদ্রণযোগ্য স্ট্রিংয়ে ফর্ম্যাট করে। এটি বাস্তবায়নের জন্য এখানে
FormatAsText
রূপান্তর রয়েছে:
/** 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
কমান্ডে অন্তর্ভুক্ত করেছি।
আপনি পাইপলাইনের জন্য কাস্টম কাউন্টারগুলিও দেখতে পারেন, যা এই ক্ষেত্রে দেখায় যে কার্যকর করার সময় এখনও পর্যন্ত কতগুলি খালি লাইনের সম্মুখীন হয়েছে৷ অ্যাপ্লিকেশন-নির্দিষ্ট মেট্রিক্স ট্র্যাক করার জন্য আপনি আপনার পাইপলাইনে নতুন কাউন্টার যোগ করতে পারেন।
নির্দিষ্ট ত্রুটি বার্তা দেখতে আপনি লগ আইকনে ক্লিক করতে পারেন।
আপনি ন্যূনতম তীব্রতা ড্রপ-ডাউন মেনু ব্যবহার করে জব লগ ট্যাবে প্রদর্শিত বার্তাগুলি ফিল্টার করুন৷
আপনার পাইপলাইন চালানোর কম্পিউট ইঞ্জিন দৃষ্টান্তগুলির জন্য কর্মী লগগুলি দেখতে আপনি লগ ট্যাবে কর্মী লগ বোতামটি ব্যবহার করতে পারেন। কর্মী লগগুলি আপনার কোড দ্বারা উত্পন্ন লগ লাইন এবং এটি চালানোর ডেটাফ্লো জেনারেটেড কোড নিয়ে গঠিত।
আপনি যদি পাইপলাইনে একটি ব্যর্থতা ডিবাগ করার চেষ্টা করেন, তবে প্রায়শই কর্মী লগগুলিতে অতিরিক্ত লগিং থাকবে যা সমস্যার সমাধান করতে সহায়তা করে। মনে রাখবেন যে এই লগগুলি সমস্ত কর্মী জুড়ে একত্রিত হয় এবং ফিল্টার এবং অনুসন্ধান করা যেতে পারে।
পরবর্তী ধাপে, আমরা পরীক্ষা করব যে আপনার কাজ সফল হয়েছে।
Google ক্লাউড প্ল্যাটফর্ম কনসোলে ক্লাউড ডেটাফ্লো মনিটরিং UI খুলুন।
আপনি প্রথমে রানিং এর স্ট্যাটাস সহ আপনার শব্দগণনার কাজ দেখতে হবে এবং তারপর সফল হয়েছে :
কাজটি চালানোর জন্য প্রায় 3-4 মিনিট সময় লাগবে।
মনে আছে আপনি যখন পাইপলাইন চালাতেন এবং একটি আউটপুট বালতি নির্দিষ্ট করেছিলেন? আসুন ফলাফলটি একবার দেখে নেওয়া যাক (কারণ আপনি দেখতে চান না কিং লিয়ারের প্রতিটি শব্দ কতবার ঘটেছে?!)। Google ক্লাউড প্ল্যাটফর্ম কনসোলে ক্লাউড স্টোরেজ ব্রাউজারে ফিরে যান। আপনার বালতিতে, আপনি আউটপুট ফাইল এবং স্টেজিং ফাইলগুলি দেখতে পাবেন যা আপনার কাজ তৈরি করেছে:
আপনি Google ক্লাউড প্ল্যাটফর্ম কনসোল থেকে আপনার সংস্থানগুলি বন্ধ করতে পারেন৷
Google ক্লাউড প্ল্যাটফর্ম কনসোলে ক্লাউড স্টোরেজ ব্রাউজারটি খুলুন।
আপনার তৈরি করা বালতির পাশের চেকবক্সটি নির্বাচন করুন।
বালতি এবং এর বিষয়বস্তু স্থায়ীভাবে মুছে ফেলতে DELETE এ ক্লিক করুন।
আপনি শিখেছেন কিভাবে ক্লাউড ডেটাফ্লো SDK দিয়ে একটি Maven প্রকল্প তৈরি করতে হয়, Google ক্লাউড প্ল্যাটফর্ম কনসোল ব্যবহার করে একটি উদাহরণ পাইপলাইন চালাতে হয় এবং সংশ্লিষ্ট ক্লাউড স্টোরেজ বাকেট এবং এর বিষয়বস্তু মুছে ফেলতে হয়।
আরও জানুন
- ডেটাফ্লো ডকুমেন্টেশন: https://cloud.google.com/dataflow/docs/
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 3.0 জেনেরিক লাইসেন্স এবং Apache 2.0 লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।