Apache Storm একটি ডিস্ট্রিবিউটেড ডেটা প্রসেসিং সিস্টেম যা ক্লাস্টার ভিত্তিক কাজ করে। Storm ক্লাস্টারটির মধ্যে বেশ কয়েকটি উপাদান থাকে, যার মধ্যে Nimbus অন্যতম গুরুত্বপূর্ণ। Nimbus হলো Storm ক্লাস্টারের প্রধান কম্পোনেন্ট যা টপোলজি ম্যানেজমেন্ট এবং নিয়ন্ত্রণ করে। ক্লাস্টারের মধ্যে আরও কিছু উপাদান যেমন Supervisor এবং Zookeeper থাকে, যা সমন্বয়ের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে। এই গাইডে আমরা Storm Cluster এবং Nimbus Configuration এর বিষয়টি বিস্তারিতভাবে জানব।
Apache Storm Cluster Architecture
Storm ক্লাস্টারের প্রধান উপাদান হলো:
- Nimbus: Nimbus হলো Storm ক্লাস্টারের মাস্টার নোড, যা ক্লাস্টারের টপোলজি ম্যানেজমেন্ট এবং এক্সিকিউশন নিয়ন্ত্রণ করে। Nimbus ক্লাস্টারের মধ্যে টপোলজি স্থাপন এবং তদারকি করা, পাশাপাশি নতুন কাজের জন্য নোড বরাদ্দ করা হয়।
- Supervisor: Supervisor হলো ক্লাস্টারের কর্মী নোড (Worker Node), যা প্রতিটি টপোলজির জন্য কর্মী প্রক্রিয়া চালানোর জন্য দায়িত্ব পালন করে। Supervisor বোল্ট এবং স্পাউট এর বিভিন্ন টাস্কগুলো সম্পন্ন করে।
- Zookeeper: Zookeeper হল একটি কোঅর্ডিনেশন সিস্টেম যা ক্লাস্টারের মধ্যে সমস্ত নোডের মধ্যে যোগাযোগ ও সমন্বয় রাখে। এটি Storm নোডের স্থিতি এবং টপোলজি ম্যানেজমেন্টের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Storm Cluster Configuration Overview
Storm ক্লাস্টারের মধ্যে Nimbus এবং Supervisor নোডকে সঠিকভাবে কনফিগার করা দরকার। Zookeeper ইনস্টলেশন এবং কনফিগারেশনও Storm ক্লাস্টারের জন্য অপরিহার্য। আসুন, দেখে নেওয়া যাক কিভাবে Nimbus এবং Cluster সেটআপ করা হয়।
Nimbus Configuration
Nimbus Storm ক্লাস্টারের ম্যানেজার হিসেবে কাজ করে এবং টপোলজি পরিচালনা করে। Nimbus সার্ভার ইনস্টল এবং কনফিগার করার জন্য কিছু সাধারণ পদক্ষেপ অনুসরণ করতে হবে।
Nimbus এর কনফিগারেশন ফাইল
Nimbus-এর কনফিগারেশন ফাইল storm.yaml এ নির্ধারিত হয়। এই ফাইলটি conf/storm.yaml ডিরেক্টরিতে থাকে। Nimbus সম্পর্কিত কিছু গুরুত্বপূর্ণ কনফিগারেশন সেটিংস:
nimbus.host: Nimbus-এর জন্য হোস্টনেম বা আইপি অ্যাড্রেস নির্ধারণ করা হয়। ক্লাস্টারের প্রধান নোড হিসেবে এটি নির্ধারণ করা হয়।
nimbus.host: "localhost"storm.zookeeper.servers: Zookeeper সার্ভারের হোস্টনেম বা আইপি অ্যাড্রেসের লিস্ট। Nimbus Zookeeper এর সাথে যোগাযোগ করে ক্লাস্টারের নোডগুলো পরিচালনা করে।
storm.zookeeper.servers: - "localhost"nimbus.supervisor.slots.ports: Supervisor নোডে যে পোর্টে কাজ হবে তা নির্ধারণ করা হয়। এটি একটি পোর্টের লিস্ট হতে পারে, যেখানে Supervisor নোডের বিভিন্ন কাজ/টাস্ক চালাবে।
nimbus.supervisor.slots.ports: - 6700 - 6701nimbus.daemon.worker.threads: Nimbus কিভাবে থ্রেড পরিচালনা করবে তা নির্ধারণ করা হয়। এখানে বিভিন্ন থ্রেড সংখ্যা নির্ধারণ করে, যাতে Nimbus এর কাজ দক্ষভাবে সম্পন্ন হয়।
nimbus.daemon.worker.threads: 4storm.local.dir: Storm কনফিগারেশন ফাইলের জন্য লোকাল ডিরেক্টরি নির্দেশ করা হয়। এটি সাধারণত লোকাল স্টোরেজের জন্য নির্ধারণ করা হয়, যেখানে টেম্পোরারি ডেটা রাখা হয়।
storm.local.dir: "/tmp/storm"
Supervisor Configuration
Supervisor Storm ক্লাস্টারের কর্মী নোড হিসেবে কাজ করে। এটি Nimbus থেকে প্রাপ্ত কাজ বা টাস্কগুলি (বোল্ট বা স্পাউট) প্রসেস করার জন্য দায়িত্ব পালন করে। Supervisor কনফিগারেশন storm.yaml ফাইলে নির্ধারণ করা হয়।
Supervisor Configuration Options:
supervisor.slots.ports: Supervisor নোডে যে পোর্টগুলি ব্যবহৃত হবে তা নির্ধারণ করা হয়। এটি সাধারণত ১টি বা একাধিক পোর্ট হতে পারে যা Storm-এর টাস্ক চালানোর জন্য ব্যবহৃত হবে।
supervisor.slots.ports: - 6700 - 6701supervisor.workers.threads: Supervisor কতগুলি থ্রেড ব্যবহার করবে তা নির্ধারণ করা হয়। এই থ্রেডগুলি Storm টপোলজি প্রসেসিং সম্পন্ন করার জন্য ব্যবহৃত হয়।
supervisor.workers.threads: 4
Storm Cluster Setup Example
Storm ক্লাস্টার সেটআপের জন্য একাধিক সার্ভারে Nimbus এবং Supervisor চালানোর প্রক্রিয়া নিম্নরূপ:
Nimbus সার্ভার শুরু করা: Nimbus ক্লাস্টারের মাস্টার নোড হিসেবে কাজ করে। এটি Storm টপোলজির ম্যানেজমেন্ট এবং এক্সিকিউশন পরিচালনা করে।
bin/storm nimbusSupervisor সার্ভার শুরু করা: Supervisor একটি কর্মী নোড হিসেবে কাজ করে এবং টপোলজির কাজ সম্পাদন করে। Supervisor সার্ভার শুরু করতে:
bin/storm supervisorUI সার্ভার শুরু করা (ঐচ্ছিক): Storm UI ক্লাস্টারের অবস্থা এবং টপোলজির কার্যক্রম মনিটর করার জন্য ব্যবহৃত হয়।
bin/storm ui
Zookeeper Configuration
Storm ক্লাস্টার এবং Nimbus এর জন্য Zookeeper কনফিগারেশন খুবই গুরুত্বপূর্ণ। Zookeeper ক্লাস্টারের মধ্যে নোডগুলির সমন্বয় এবং ফল্ট টলারেন্স নিশ্চিত করতে সহায়ক।
- Zookeeper কনফিগারেশন: Storm-এর জন্য Zookeeper সার্ভার ইনস্টল করার পরে, আপনি
zoo.cfgফাইল সম্পাদনা করে ক্লাস্টারের জন্য কনফিগারেশন করতে পারেন। এটি সাধারণতconf/zoo.cfgফাইলে থাকে। Zookeeper সার্ভার চালু করুন:
bin/zkServer.sh start
সারাংশ
Nimbus হলো Storm ক্লাস্টারের মাস্টার নোড, যা ক্লাস্টারের টপোলজি এবং প্রসেসিং ম্যানেজ করে। এটি Zookeeper এবং Supervisor এর মাধ্যমে Storm টপোলজির কার্যক্রম পরিচালনা করে। Supervisor ক্লাস্টারের কর্মী নোড হিসেবে কাজ করে, যা বোল্ট এবং স্পাউট টাস্কগুলো সম্পন্ন করে। Storm ক্লাস্টার সঠিকভাবে কাজ করার জন্য Nimbus এবং Supervisor উভয়ের সঠিক কনফিগারেশন অত্যন্ত গুরুত্বপূর্ণ।
Read more