Apache Flink-এ Fault Tolerance স্ট্রিম এবং ব্যাচ প্রসেসিং অ্যাপ্লিকেশনগুলির স্থায়িত্ব এবং নির্ভরযোগ্যতা নিশ্চিত করার একটি প্রক্রিয়া। Flink এর মূল মেকানিজমগুলো হলো checkpointing এবং savepointing, যা ফেইলওভারের সময় অ্যাপ্লিকেশনকে পুনরুদ্ধার করতে সহায়তা করে। Flink অ্যাপ্লিকেশন চলাকালীন কোনো ত্রুটি (যেমন: নেটওয়ার্ক সমস্যা, হার্ডওয়্যার ফেলিওর) হলে, Flink এই মেকানিজমগুলো ব্যবহার করে অ্যাপ্লিকেশনকে পুনরায় চালু করতে পারে এবং ডেটা প্রসেসিং সঠিক অবস্থান থেকে পুনরায় শুরু করতে পারে।
Checkpointing Flink-এর একটি মেকানিজম যা নিয়মিত সময়ের ব্যবধানে জবের বর্তমান স্টেট সংরক্ষণ করে। Checkpointing এর মাধ্যমে Flink একটি নির্দিষ্ট ইন্টারভালে প্রতিটি টাস্কের জন্য state এবং ডেটার পজিশন সংরক্ষণ করে, যাতে কোনো ত্রুটি ঘটলে পুনরায় প্রসেসিং সঠিক অবস্থান থেকে শুরু করা যায়।
Checkpointing Configuration:
state.checkpoints.dir: hdfs:///flink/checkpoints
env.enableCheckpointing(10000); // প্রতি ১০ সেকেন্ডে চেকপয়েন্ট নেওয়া
Incremental Checkpointing:
Savepointing হলো Flink-এর ম্যানুয়াল প্রক্রিয়া যা checkpointing-এর মতোই কাজ করে, তবে এটি সাধারণত জব আপগ্রেড বা ম্যানুয়াল রিস্টার্টের জন্য ব্যবহৃত হয়। Savepoint হলো ফ্লিঙ্ক জবের একটি স্ন্যাপশট, যা ডেভেলপাররা প্রয়োজন অনুযায়ী তৈরি করতে পারে এবং সেই savepoint থেকে পুনরায় জব শুরু করতে পারে।
./bin/flink savepoint :jobId :savepointDirectory
./bin/flink run -s :savepointPath path/to/your-job.jar
Flink অ্যাপ্লিকেশনগুলির state সংরক্ষণের জন্য State Backend ব্যবহার করে, যা Flink এর fault tolerance সিস্টেমে গুরুত্বপূর্ণ ভূমিকা পালন করে। Flink বিভিন্ন ধরনের state backend সমর্থন করে, যেমন:
Flink-এর চেকপয়েন্টিং এবং savepointing সিস্টেম state backend ব্যবহার করে state সংরক্ষণ করে, যা কোনো টাস্ক ক্র্যাশ করলে পুনরায় state পুনরুদ্ধার করতে সাহায্য করে।
state.backend: rocksdb
state.checkpoints.dir: hdfs:///flink/checkpoints
Flink দুটি ধরনের প্রসেসিং সেমান্টিক্স সমর্থন করে:
Checkpointing ব্যবহার করে Flink এই সেমান্টিক্স বজায় রাখে:
Flink এর High Availability সিস্টেম তার Job Manager এবং Task Manager গুলিকে রিডান্ড্যান্ট রাখতে সহায়তা করে, যা ক্লাস্টারের স্থায়িত্ব বাড়ায়। সাধারণত, Flink ZooKeeper ব্যবহার করে Job Manager এর জন্য leader election এবং চেকপয়েন্ট সংরক্ষণ করে।
high-availability: zookeeper
high-availability.zookeeper.quorum: zk1:2181,zk2:2181,zk3:2181
high-availability.storageDir: hdfs:///flink/ha
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// Checkpointing সক্রিয় করা
env.enableCheckpointing(10000); // প্রতি ১০ সেকেন্ডে চেকপয়েন্ট
// চেকপয়েন্টের ডিরেক্টরি সেট করা
env.getCheckpointConfig().setCheckpointStorage("hdfs:///flink/checkpoints");
// Exactly-once প্রসেসিং সেমান্টিক্স সেট করা
env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
// চেকপয়েন্টের timeout সেট করা
env.getCheckpointConfig().setCheckpointTimeout(60000); // ১ মিনিট
// Data Stream প্রসেসিং
DataStream<String> stream = env.socketTextStream("localhost", 9999);
stream.map(value -> value.toUpperCase()).print();
env.execute("Flink Fault Tolerance Example");
Apache Flink এর Fault Tolerance সিস্টেম তার চেকপয়েন্টিং এবং savepointing মেকানিজম ব্যবহার করে স্ট্রিম এবং ব্যাচ অ্যাপ্লিকেশনগুলোর নির্ভরযোগ্যতা নিশ্চিত করে। এটি বিভিন্ন state backend এর সাথে ইন্টিগ্রেটেড হয়ে কাজ করে এবং ঠিক সময়ে state এবং ডেটার স্ন্যাপশট সংরক্ষণ করে, যাতে কোনো ত্রুটি ঘটলে Flink পুনরায় প্রসেসিং শুরু করতে পারে এবং নির্ভুলতা বজায় রাখতে পারে।
আরও দেখুন...