Apache Flink-এ Checkpointing এবং Savepoints হলো স্টেটফুল স্ট্রিম প্রসেসিংয়ের দুটি গুরুত্বপূর্ণ ফিচার যা ডেটা অ্যাপ্লিকেশনগুলোর ফল্ট টলারেন্স এবং স্টেট ম্যানেজমেন্ট নিশ্চিত করে। এগুলোর মাধ্যমে অ্যাপ্লিকেশন ক্র্যাশ বা রিস্টার্ট হওয়ার পরেও পূর্ববর্তী স্টেট থেকে পুনরায় কাজ শুরু করা যায়, যা ডেটা প্রসেসিংয়ের নির্ভুলতা বজায় রাখতে সাহায্য করে।
Checkpointing হলো Flink-এর স্বয়ংক্রিয় মেকানিজম যা নির্দিষ্ট সময় অন্তর প্রতিটি টাস্কের স্টেট সংরক্ষণ করে। এটি নিশ্চিত করে যে, কোনো সমস্যা বা ব্যর্থতার কারণে অ্যাপ্লিকেশন রিস্টার্ট হলেও ডেটা প্রসেসিং শেষ সফল চেকপয়েন্ট থেকে শুরু হয়।
Flink-এ চেকপয়েন্টিং কনফিগার করার জন্য CheckpointConfig
ব্যবহার করা হয়। এটি সাধারণত StreamExecutionEnvironment
-এ কনফিগার করা হয়।
কোড উদাহরণ:
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// চেকপয়েন্টিং চালু করা এবং ইন্টারভাল সেট করা (১০ সেকেন্ড)
env.enableCheckpointing(10000);
// চেকপয়েন্ট কনফিগারেশন সেট করা
env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(5000);
env.getCheckpointConfig().setCheckpointTimeout(60000);
env.getCheckpointConfig().setMaxConcurrentCheckpoints(1);
বর্ণনা:
enableCheckpointing(10000)
: ১০ সেকেন্ড অন্তর চেকপয়েন্ট তৈরি করা।CheckpointingMode.EXACTLY_ONCE
: চেকপয়েন্ট মেকানিজম প্রতিটি ডেটা রেকর্ড একবারই প্রসেস করা নিশ্চিত করে।setCheckpointTimeout(60000)
: চেকপয়েন্ট টাইমআউট ৬০ সেকেন্ড সেট করা হয়েছে।Savepoints হলো ম্যানুয়ালভাবে তৈরি করা চেকপয়েন্ট, যা মূলত অ্যাপ্লিকেশন আপগ্রেড, রিস্টার্ট, বা মাইগ্রেশনের জন্য ব্যবহৃত হয়। Savepoints সাধারণত একটি নির্দিষ্ট অবস্থায় অ্যাপ্লিকেশনের স্টেট ধরে রাখে, এবং পরবর্তী সময়ে অ্যাপ্লিকেশন আবার শুরু করার সময় সেখান থেকে শুরু করা যায়।
Flink-এ Savepoints তৈরি করতে, কমান্ড-লাইন টুল বা API ব্যবহার করা যায়।
কমান্ড উদাহরণ:
bin/flink savepoint :jobId /path/to/savepoint-directory
বর্ণনা: এখানে, নির্দিষ্ট jobId
-এর জন্য একটি Savepoint তৈরি করা হচ্ছে এবং এটি /path/to/savepoint-directory
-এ সংরক্ষণ করা হচ্ছে।
Flink Savepoints ব্যবহার করে অ্যাপ্লিকেশন পুনরায় শুরু করা যায়, যা স্টেটফুল অ্যাপ্লিকেশনগুলোর আপগ্রেড বা মাইগ্রেশনের ক্ষেত্রে কার্যকর।
কমান্ড উদাহরণ:
bin/flink run -s /path/to/savepoint-directory savepoint-job.jar
বর্ণনা: Savepoint ফাইলের অবস্থান (/path/to/savepoint-directory
) থেকে Flink অ্যাপ্লিকেশন পুনরায় চালানো হচ্ছে।
ফিচার | Checkpointing | Savepoints |
---|---|---|
Triggering | স্বয়ংক্রিয়ভাবে নির্দিষ্ট ইন্টারভালে ঘটে | ম্যানুয়ালি ট্রিগার করতে হয় |
Usage | অ্যাপ্লিকেশনের ফল্ট টলারেন্স এবং স্টেট রিকভারি | অ্যাপ্লিকেশন আপগ্রেড, রিস্টার্ট, এবং মাইগ্রেশনে ব্যবহৃত |
Retention | স্বল্পমেয়াদী, শুধুমাত্র ফেইলওভার হ্যান্ডলিং | দীর্ঘমেয়াদী, কাস্টম স্টেট ম্যানেজমেন্টের জন্য |
Storage | সাধারণত হালকা ওজনের স্টোরেজে সংরক্ষণ হয় | নির্দিষ্ট স্টোরেজ লোকেশনে সংরক্ষণ করা হয় |
Apache Flink-এ Checkpointing এবং Savepoints ব্যবহার করে অ্যাপ্লিকেশনগুলোর ফল্ট টলারেন্স, স্টেট ম্যানেজমেন্ট, এবং স্কেলাবিলিটি নিশ্চিত করা সম্ভব। Checkpointing সাধারণত স্বয়ংক্রিয়ভাবে ঘটে এবং ফেইলওভার সিচুয়েশন ম্যানেজ করে, যেখানে Savepoints ম্যানুয়ালি ট্রিগার করা হয় এবং অ্যাপ্লিকেশনের আপগ্রেড বা মাইগ্রেশনে ব্যবহৃত হয়। এই দুটি ফিচার Flink-এ স্টেটফুল ডেটা প্রসেসিং আরও নির্ভরযোগ্য এবং স্কেলেবল করে তোলে।
আরও দেখুন...