YARN (Yet Another Resource Negotiator) হলো Hadoop এর একটি রিসোর্স ম্যানেজার, যা হাদুপ ক্লাস্টারের রিসোর্স ম্যানেজমেন্ট এবং কাজের (Job) শিডিউলিং এর কাজ সম্পাদন করে। YARN Hadoop এর 2.x সংস্করণে পরিচিত হয়, যা MapReduce এবং অন্যান্য কাজের প্রসেসিং এর জন্য রিসোর্স নিয়ন্ত্রণ ও পরিচালনা করে।
YARN এর মাধ্যমে Hadoop ক্লাস্টারের রিসোর্সগুলিকে আরও দক্ষভাবে ব্যবহার করা যায় এবং এটি শুধুমাত্র MapReduce নয়, অন্যান্য প্রসেসিং অ্যাপ্লিকেশনও চালাতে সক্ষম।
YARN এর Architecture
YARN এর আর্কিটেকচার তিনটি প্রধান উপাদান নিয়ে গঠিত:
১. ResourceManager (RM)
ResourceManager হলো YARN এর কেন্দ্রীয় কম্পোনেন্ট, যা ক্লাস্টারের সমস্ত রিসোর্সের ব্যবস্থাপনা করে। এটি ক্লাস্টারের সমস্ত নোডের রিসোর্স (যেমন CPU, মেমোরি) ট্র্যাক করে এবং কাজের জন্য উপযুক্ত রিসোর্স বরাদ্দ করে।
ResourceManager এর দুটি অংশ:
- Scheduler: এটি ক্লাস্টারে থাকা কাজগুলির জন্য রিসোর্স বরাদ্দের জন্য সিদ্ধান্ত গ্রহণ করে। তবে, এটি কেবল কাজের জন্য প্রয়োজনীয় রিসোর্স বরাদ্দ করে, বাস্তবিক কাজের প্রসেসিং বা এক্সিকিউশন পরিচালনা করে না।
- ApplicationManager: এটি একটি অ্যাপ্লিকেশনের লাইফ সাইকেল পরিচালনা করে, যার মধ্যে অ্যাপ্লিকেশন স্টার্ট হওয়া থেকে শেষ হওয়া পর্যন্ত সমস্ত কার্যক্রম অন্তর্ভুক্ত থাকে।
২. NodeManager (NM)
NodeManager হলো YARN ক্লাস্টারের প্রতিটি নোডে চলমান একটি ডেমন, যা নির্দিষ্ট নোডে কাজ (tasks) চালানোর জন্য রিসোর্স বরাদ্দের কাজ করে। এটি একটি নির্দিষ্ট নোডে চলমান কাজের স্ট্যাটাস এবং রিসোর্স ব্যবহার মনিটর করে এবং ResourceManager-কে জানায়।
৩. ApplicationMaster (AM)
ApplicationMaster হলো একটি ক্লাস যা একটি নির্দিষ্ট অ্যাপ্লিকেশনের কাজের জন্য রিসোর্স বরাদ্দ এবং এক্সিকিউশন পরিচালনা করে। এটি ResourceManager থেকে রিসোর্স চেয়ে নেয় এবং NodeManager এর মাধ্যমে সেই রিসোর্সে কাজ সম্পাদন করে। প্রতিটি অ্যাপ্লিকেশনের জন্য আলাদা ApplicationMaster থাকে।
৪. Container
Container হলো একটি নির্দিষ্ট পরিসরের মধ্যে একটি কাজ (task) চালানোর জন্য প্রয়োজনীয় সমস্ত রিসোর্স (যেমন CPU, মেমোরি) প্রদান করে। YARN কাজের জন্য containers তৈরি করে এবং সেই containers-এর মধ্যে কাজ এক্সিকিউট হয়।
YARN Job Execution
YARN এর মাধ্যমে কাজের (Job) execution তিনটি মূল ধাপে হয়:
১. Job Submission
প্রথমে, ব্যবহারকারী একটি কাজ বা অ্যাপ্লিকেশন (যেমন MapReduce কাজ) চালানোর জন্য YARN ক্লাস্টারে জমা দেন। অ্যাপ্লিকেশনটি একটি অ্যাপ্লিকেশন ম্যানেজার (ApplicationMaster) এর মাধ্যমে ResourceManager এ জমা হয়।
২. Resource Requesting and Allocation
ApplicationMaster ResourceManager থেকে রিসোর্সের জন্য অনুরোধ করে। ResourceManager, যেহেতু এটি সমস্ত ক্লাস্টারের রিসোর্সের ম্যানেজার, রিসোর্স বরাদ্দের জন্য একটি শিডিউল তৈরি করে এবং নির্দিষ্ট নোডে কাজ চালানোর জন্য রিসোর্স প্রদান করে।
৩. Job Execution
ResourceManager রিসোর্স বরাদ্দ করার পর, ApplicationMaster সেই রিসোর্সের ভিত্তিতে NodeManager এর সাহায্যে কাজের এক্সিকিউশন পরিচালনা করে। NodeManager প্রত্যেক নোডের মধ্যে নির্দিষ্ট containers তৈরি করে এবং সেখানে কাজটি এক্সিকিউট হয়। কাজের সম্পাদনা শেষে, ApplicationMaster কাজের ফলাফল সংগ্রহ করে।
৪. Job Completion
একটি কাজ সফলভাবে সম্পন্ন হলে, ApplicationMaster কাজের অবস্থা ResourceManager এ জানায় এবং কাজটি শেষ হয়। Job execution এর শেষে কাজের রিপোর্ট তৈরি করা হয় এবং যে নোডগুলো কাজের জন্য ব্যবহার হয়েছে, সেগুলোর রিসোর্স ছেড়ে দেওয়া হয়।
YARN এর সুবিধা
- স্কেলেবিলিটি (Scalability): YARN অনেক বড় এবং আরও বেশি ক্লাস্টার পরিচালনা করতে সক্ষম, কারণ এটি রিসোর্সের কার্যকর ব্যবস্থাপনা এবং শিডিউলিং করতে পারে।
- ফ্লেক্সিবিলিটি (Flexibility): YARN শুধুমাত্র MapReduce নয়, অন্যান্য প্রসেসিং মডেল (যেমন Spark, Tez) চালাতে সক্ষম।
- ফল্ট টলারেন্স (Fault Tolerance): YARN একটি নোড বা Container ব্যর্থ হলে, এটি অন্য নোডে কাজ পুনরায় শিডিউল করে এবং কার্যক্রম অব্যাহত রাখে।
- ইফিশিয়েন্সি (Efficiency): YARN রিসোর্সকে অধিক কার্যকরভাবে পরিচালনা করে, যাতে ক্লাস্টারের রিসোর্স সম্পূর্ণভাবে ব্যবহার করা যায় এবং উচ্চ পারফরম্যান্স নিশ্চিত করা যায়।
সারাংশ
YARN হলো Hadoop এর একটি শক্তিশালী রিসোর্স ম্যানেজমেন্ট সিস্টেম, যা ক্লাস্টারে রিসোর্স বরাদ্দ এবং কাজের শিডিউলিং করে। এটি ক্লাস্টারের রিসোর্স ব্যবস্থাপনা এবং কাজের এক্সিকিউশন আরও দক্ষ এবং স্কেলেবল করে তোলে। YARN এর মাধ্যমে, Hadoop শুধুমাত্র MapReduce নয়, অন্যান্য প্রসেসিং মডেলও চালানোর সক্ষমতা পায়, যা আধুনিক ডেটা বিশ্লেষণের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Read more