Apache Storm এর আর্কিটেকচার একটি ডিস্ট্রিবিউটেড এবং টপোলজি-ভিত্তিক (Topology-based) মডেল ব্যবহার করে, যা রিয়েল-টাইম ডেটা স্ট্রিম প্রসেসিং নিশ্চিত করে। এটি অত্যন্ত স্কেলেবল, ফল্ট টলারেন্ট এবং ডিস্ট্রিবিউটেড আর্কিটেকচার যা বড় আকারের ডেটা প্রসেসিং টাস্কগুলো দ্রুত এবং কার্যকরভাবে সম্পন্ন করতে সক্ষম। Storm এর আর্কিটেকচার মূলত তিনটি প্রধান উপাদান বা কম্পোনেন্টের উপর ভিত্তি করে কাজ করে: Nimbus, Supervisor, এবং Zookeeper।
Storm Architecture এর মূল উপাদান
১. Nimbus
Nimbus হলো Storm ক্লাস্টারের কেন্দ্রীয় ম্যানেজার বা কো-অর্ডিনেটর। এটি Storm টপোলজির জীবনচক্র পরিচালনা করে এবং সকল কাজের তদারকি করে। Nimbus এর প্রধান কাজগুলি হলো:
- টপোলজি ডিপ্লয়মেন্ট (Topology Deployment): Nimbus নতুন টপোলজি ডিপ্লয় করে, অর্থাৎ ডেটা প্রসেসিং টাস্ককে বিভিন্ন নোডে বিতরণ করে।
- টাস্ক স্কেডিউলিং (Task Scheduling): এটি নির্ধারণ করে কোন নোডে কী কাজ চলবে এবং তা কখন সম্পন্ন হবে।
- ফল্ট টলারেন্স: Nimbus টপোলজির নোডগুলো এবং তাদের কাজের অবস্থা মনিটর করে এবং কোনো নোড ব্যর্থ হলে তা পুনরায় চালু করতে সহায়তা করে।
২. Supervisor
Supervisor হলো Storm ক্লাস্টারের নোড বা মেশিনের মধ্যে চলমান প্রসেসর। এটি একাধিক Worker প্রসেস চালানোর জন্য দায়ী এবং এর প্রধান কাজগুলি হলো:
- টাস্ক এক্সিকিউশন (Task Execution): Supervisor স্পাউট (Spout) এবং বোল্ট (Bolt) গুলি এক্সিকিউট করার জন্য উপযুক্ত পরিবেশ প্রদান করে। এটি নিশ্চিত করে যে সমস্ত কাজ ঠিকভাবে সম্পন্ন হচ্ছে।
- টপোলজি মনিটরিং (Topology Monitoring): Supervisor নিরীক্ষণ করে কোন টাস্ক সঠিকভাবে চলছে কিনা এবং যদি কোনো সমস্যা হয় তবে তা সমাধান করতে সাহায্য করে।
৩. Zookeeper
Zookeeper Storm ক্লাস্টারের সিঙ্ক্রোনাইজেশন এবং কনফিগারেশন ব্যবস্থাপনা জন্য ব্যবহৃত হয়। এটি ডিস্ট্রিবিউটেড সিস্টেমে সব নোডের মধ্যে যোগাযোগ ও সমন্বয় নিশ্চিত করে। Zookeeper Storm এ নিচের কাজগুলো করে:
- কনফিগারেশন শেয়ারিং: Storm এর ক্লাস্টারে টপোলজি, ক্লাস্টার স্টেট এবং অন্যান্য কনফিগারেশন এক্সেস করা হয় Zookeeper এর মাধ্যমে।
- ক্লাস্টার সমন্বয়: Zookeeper সমস্ত নোডের মধ্যে ক্লাস্টার স্টেট সমন্বয় করে, যাতে Storm এর সমস্ত উপাদান সুসংগতভাবে কাজ করতে পারে।
- ফল্ট টলারেন্স: যদি Nimbus বা Supervisor কোন কারণে ব্যর্থ হয়, Zookeeper তা পুনরায় সিঙ্ক্রোনাইজ করতে সহায়তা করে।
Storm এর প্রসেসিং মডেল
Storm এর আর্কিটেকচার টপোলজি-ভিত্তিক (Topology-based) যা দুটি প্রধান উপাদান নিয়ে কাজ করে:
১. Spout (স্পাউট)
স্পাউট হলো ডেটা উৎস। এটি ডেটা সংগ্রহ করে এবং Storm এর মধ্যে প্রবাহিত করে। স্পাউটের কাজ হলো:
- লাইভ ডেটা স্ট্রিম সংগ্রহ করা (যেমন Kafka, RabbitMQ বা অন্য কোনো উৎস থেকে)
- ডেটা টপোলজিতে প্রেরণ করা, যাতে বোল্ট সেগুলো প্রক্রিয়া করতে পারে।
২. Bolt (বোল্ট)
বোল্ট হলো ডেটা প্রসেসিং ইউনিট। এটি ডেটা গ্রহণ করে এবং তাকে প্রক্রিয়া করে, যেমন:
- ফিল্টারিং (Filtering): অপ্রয়োজনীয় ডেটা বাদ দেওয়া।
- ট্রান্সফরমেশন (Transformation): ডেটার কাঠামো বা কন্টেন্ট পরিবর্তন করা।
- অ্যাগ্রিগেশন (Aggregation): একাধিক ডেটার উপর কিছু হিসাব বা সমষ্টি করা।
Storm Architecture এর কাজের প্রক্রিয়া
Storm ক্লাস্টারে একটি টপোলজি তৈরি করা হয় যা ডেটা স্ট্রিম প্রক্রিয়াকরণের জন্য স্পাউট এবং বোল্ট গুলোর একসাথে কাজ করে। এই টপোলজি বিভিন্নভাবে কনফিগার করা যায়:
- টপোলজি গ্রাফ: Storm টপোলজি একটি গ্রাফের মতো কাজ করে, যেখানে নোডগুলি স্পাউট এবং বোল্ট এবং এজগুলি তাদের মধ্যে ডেটা প্রবাহ নির্দেশ করে।
- টাস্ক ডিস্ট্রিবিউশন: Nimbus টপোলজি ডিপ্লয় করার সময়, এটি টাস্ক গুলি Supervisor নোডগুলিতে বিতরণ করে। Supervisor গুলি কর্মীদের (workers) মাধ্যমে এই কাজগুলো সম্পাদন করে।
Storm Architecture এর সুবিধা
- স্কেলেবিলিটি: Storm ডিস্ট্রিবিউটেড সিস্টেমের মাধ্যমে একাধিক সার্ভার বা নোডের মাধ্যমে প্রসেসিং টাস্কগুলি বিতরণ করা সম্ভব, যার ফলে এটি বড় ডেটা সেট পরিচালনার জন্য আদর্শ।
- ফল্ট টলারেন্স: Zookeeper এবং Nimbus এর সাহায্যে Storm অত্যন্ত ফল্ট টলারেন্ট। একটি নোড বা সার্ভার ব্যর্থ হলেও, Storm ক্লাস্টার দ্রুত পুনরুদ্ধার করতে সক্ষম।
- এলাস্টিকিটি: Storm একাধিক নোডে স্কেল করা যায়, যা ভারী প্রসেসিং লোডের সময় সহায়ক।
Apache Storm এর আর্কিটেকচার ডিস্ট্রিবিউটেড, ফল্ট টলারেন্ট এবং স্কেলেবল হওয়ার কারণে এটি রিয়েল-টাইম ডেটা প্রসেসিং এবং স্ট্রিমিং ডেটার জন্য একটি শক্তিশালী প্ল্যাটফর্ম হিসেবে বিবেচিত।
Read more